合并火花数据框中的列



我做了一个算法,我得到了很多带有名称逻辑数字后缀的列,我需要做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  | 

感谢您的帮助。

首先找到要在coalesce中使用的所有列:

val cols = df.columns.filter(_.startsWith("logic")).map(col(_))

然后执行实际coalesce

df.select($"id", coalesce(cols: _*).as("logic"))

相关内容

  • 没有找到相关文章

最新更新