是否可以将选择查询存储为变量?

时间:2018-07-19 12:46:11

标签: scala apache-spark apache-spark-sql

我需要比较不同的数据框,但是它们有一些无关的列用于比较。

我正在使用select过滤掉一些我不需要的列。 cv2.face

但是想像一下,这个选择要大得多。我在很多地方都使用它。

它正在复制代码,最重要的是它降低了可读性。

我可以将其存储到某个变量中以便更改吗

.select(col("b.start"), col("b.end")

变成这样

val remaining = difference_df.except(source_df.select(col("b.start"), col("b.end")))

2 个答案:

答案 0 :(得分:2)

您可以这样做:

val cols = List(col("b.start"), col("b.end"))

val cols = List($"b.start", $"b.end")

在您选择的位置

.select(cols: _*)

希望这会有所帮助。

答案 1 :(得分:1)

val colNames = Seq("col1", "col2" ...)
val exclude = source_df.select(colNames.map(x => col(x)): _*)
val remaining = difference_df.except(exclude)