我对spark的输入如下:
col 2 col 2 col 2安装1035/3103201135/511180/-3103501710/100017170/-1000171774/314322171774/51717185/-3142
我想使用spark sql生成以下输出:
输出35/31032035/310320/35/535/310320/35/5/180/-3103500/10000/1000/0/-10000/1000/74/3143220/1000/0/-1000/74/314322/74/50/1000/0/-1000/74/314322/74/5/185/-3142
条件和程序:如果 col_1
以及 col_2
如果值不相同,则考虑新输出列的当前金额值,但两者相同,然后将以前的所有金额值串联 /
.
i、 e.17从 col_1
哪里 col_1
& col_2
价值不同,所以考虑当前金额 0/1000
. 下一步,两个列的值相同,因此 0/1000/0/-1000
等等。需要为sparksql或sparkscala中的动态数据创建此逻辑。
1条答案
按热度按时间ecfdbz9o1#
你可以用
concat_ws
在一份从中获得的金额清单上collect_list
在适当的窗口上: