jos*_*era 4 null scala user-defined-functions apache-spark apache-spark-sql
我做了一个算法,我得到了许多名称逻辑和数字后缀的列,我需要做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 |
Run Code Online (Sandbox Code Playgroud)
响应:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
Run Code Online (Sandbox Code Playgroud)
另一个例子:
|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 |
Run Code Online (Sandbox Code Playgroud)
响应:
|id|logic|
|1 | a |
|2 | b |
|3 | c |
|4 | d |
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
首先找到要在以下位置使用的所有列coalesce:
val cols = df.columns.filter(_.startsWith("logic")).map(col(_))
Run Code Online (Sandbox Code Playgroud)
然后执行实际coalesce:
df.select($"id", coalesce(cols: _*).as("logic"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9303 次 |
| 最近记录: |