Spark Scala - 如何一起使用 $"col" 和 S 字符串插值?

Spark Scala - how to use $"col" and S string interpolation together?

我想实现这个,用 $ 而不是 col()

val x = "id"
df.select(col(s"$x"))

这给了我一个错误

df.select($s"$x") 

但这有效——没有 s 前缀如何工作?这是正确的方法吗?

df.select($"$x") 

谢谢。

是的,这是正确的 $"$x" 并且 return 列 col("id")。它之所以有效,是因为方法 $SQLImplicits:

中是这样定义的
implicit class StringToColumn(val sc: StringContext) {
  def $(args: Any*): ColumnName = {
    new ColumnName(sc.s(args: _*))
  }
}

如您所见,我们调用 StringContext.sc 方法进行字符串插值。