观远 BI

数据行的合并和拆分

创建于 2022-11-01 / 最近更新于 2023-03-06 / 4320
字体: [默认] [大] [更大]

【合并场景】按照某列把不同行合并为同一行?

方法1:在ETL中我们可以通过SQL来实现(如收集同一地区的不同门店)

select `地区`,concat_ws(',',collect_set(`门店`)) as `门店` from __THIS__ group by `地区`
--说明:as别名为中文时需要用到反引号``,否则会报错,英文则不需要。

方案2:新建计算字段“所有门店”,使用窗口函数对字段“地区”进行分组

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

image.png

image.png

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


【拆分场景】拆分一列字段的不同值放到每一行中

方法1:在ETL中用SQL实现

SELECT `城市`,`门店名` 
FROM
( 
    SELECT input1.`城市`,input1.`门店` from input1 
) 
lateral view explode(split(`门店`,',')) table_tmp_view as `门店名`

image.png

方法2:通过新加字段使用 explode(split([被拆分的字段],'分隔符')) 来实现

explode(split([门店],','))

image.png



8 人点赞过