数据行的合并和拆分
【合并场景】按照某列把不同行合并为同一行?
方法1:在ETL中我们可以通过SQL来实现(如收集同一地区的不同门店)
select `地区`,concat_ws(',',collect_set(`门店`)) as `门店` from __THIS__ group by `地区`
--说明:as别名为中文时需要用到反引号``,否则会报错,英文则不需要。
方案2:新建计算字段“所有门店”,使用窗口函数对字段“地区”进行分组
concat_ws(',',collect_set([门店])over(partition by [地区]))
注意:使用窗口函数后数据行数保持不变,所以需要根据需求使用分组聚合、去重,或者筛选数据行节点来缩减数据行数。
【拆分场景】拆分一列字段的不同值放到每一行中
方法1:在ETL中用SQL实现
SELECT `城市`,`门店名`
FROM
(
SELECT input1.`城市`,input1.`门店` from input1
)
lateral view explode(split(`门店`,',')) table_tmp_view as `门店名`
方法2:通过新加字段使用 explode(split([被拆分的字段],'分隔符')) 来实现
explode(split([门店],','))