让决策更智能
新一代智能数据分析平台

如何按照某列把不同行合并为同一行

观小智发表于:2020年04月13日 17:15:09更新于:2021年08月26日 11:46:15

需求背景:

有时我们会碰到这样的需求,需要按照某列把不同行合并为同一行,数据结构如下:

image.png

可以看出同样的地区对应有不同的门店,需要把同一“地区”的“门店”都放到同一行中。

实现方法一:

在ETL中我们可以通过SQL来实现

select `地区`,concat_ws(',',collect_set(`门店`)) as `门店` from __THIS__ group by `地区`

如下图:

image.png

标红处为分隔符,根据实际场景用不同分隔符,这里使用了','来分割。

注:as别名为中文时需要用到反引号``,否则会报错,英文则不需要。

结果:

image.png

可以看到已经把不同行合并为同一行。

实现方法二:

1. 新建计算字段“所有门店”,使用窗口函数对字段“地区”进行分组。

concat_ws(',',collect_set([门店])over(partition by [地区]))

2. 因为使用窗口函数后数据行数保持不变,所以需要根据需求使用分组聚合、去重,或者筛选数据行节点来缩减数据行数。

    您需要登录后才可以回复