簡體   English   中英

從數據幀 spark scala 中選擇列數組和 expr

[英]select array of columns and expr from dataframe spark scala

我們可以從數據框中選擇列列表和expr嗎?

我需要從數據框中選擇列列表和 expr。

下面是列列表

val dynamicColumnSelection = Array("a", "b", "c", "d", "e", "f")
// These columns will change dynamically.

而且我還有一個expr可以從同一個數據幀和上述列中進行選擇。

expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)") 

我可以選擇列數組或單個列以及expr

df.select(col("a"), col("b"), col("c"), col("d"), col("e"),
          expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)") )

但是這里dynamicColumnSelection列是動態准備的。

我們可以從數據框中選擇列列表和expr嗎?
請指導,我怎樣才能做到這一點?

數據框很大,所以不尋找連接。

您可以做的是將列名數組轉換為列數組,向其中添加表達式並使用:_*來“splat”生成的數組。

// simply creating a one line dataframe to check that it's working
val df = Seq((1, 2, 3, 4, 5 ,6, 7, 8, 9))
    .toDF("a", "b", "c", "d", "e", "f", "g", "h", "i")
val e = expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)")
val dynamicColumnSelection = Array("a", "b", "c", "d", "e", "f")
val result = df.select(dynamicColumnSelection.map(col) :+ e :_*)
result.show()

哪個產量

+---+---+---+---+---+---+---+-----+
|  a|  b|  c|  d|  e|  f|Key|Value|
+---+---+---+---+---+---+---+-----+
|  1|  2|  3|  4|  5|  6|  g|    7|
|  1|  2|  3|  4|  5|  6|  h|    8|
|  1|  2|  3|  4|  5|  6|  i|    9|
+---+---+---+---+---+---+---+-----+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM