Spark SQL-将多列中的值合并为一列

时间:2018-06-21 09:59:43

标签: sql apache-spark-sql

我需要将表格1数据转换为表格2数据。尽管应将多个行条目放入逗号分隔的单个单元格中,但SaleCounts属于特定的customer或customerId。请参阅以下内容,以更好地理解。

输入-表格列1(各列用空格分隔):

Customer    Cid     SaleCount
1           1       10
1           1       20
1           1       50
2           4       40
2           4       100
3           56      90

输出-表格第2列(各列用空格分隔):

Customer    Cid     SaleCount
1           1       10,20,50
2           4       40,100
3           56      90

2 个答案:

答案 0 :(得分:0)

请尝试以下方法:

选择客户,客户编号,    东西(                   (SELECT','+ cast(d2.SaleCount as varchar(100))从t1 d2                     哪里d2.Customer = t1.Customer和d2.Cid = t1.Cid                    客户订单,CID                     FOR XML PATH('')),1,1,''         ) 从t1

按客户分组的Cid

答案 1 :(得分:0)

在Spark SQL中,我认为FOR XML PATH不起作用,请尝试:

SELECT Customer, Cid, concat_ws(', ',collect_set(SaleCount)) as SaleCounts
FROM tbl1
GROUP BY Customer, Cid
ORDER BY Customer, Cid

上面应该给你什么?