我做了一个算法,并且有很多列,它们的名称为 logic 和 number后缀,我需要做coalesce
,但是我不需要知道如何将coalesce
应用于不同的列数。
示例:
|id|logic_01|logic_02|logic_03|
|1 | null |a |null |
|2 | null |b |null |
|3 | c | null |null |
|4 | null | null |d |
响应:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
另一个例子:
|id|logic_01|logic_02|logic_03|logic_04|
|1 | null |a |null |null |
|2 | null | null |null |b |
|3 | c | null |null |null |
|4 | null | null |d |null |
响应:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
感谢您的帮助。
答案 0 :(得分:7)
首先在coalesce
中找到要使用的所有列:
val cols = df.columns.filter(_.startsWith("logic")).map(col(_))
然后执行实际的coalesce
:
df.select($"id", coalesce(cols: _*).as("logic"))