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

ETL中两种方式实现行转列

观小远发表于:2021年01月09日 16:44:26

背景

在数据是,有时我们需要根据一定主键,将某个有固定分类的字段作为列名展开,将多行数据转成列数据,也就是实现行转列的效果。下面我们ETL行转列功能和SQL输入两种方式实现。

实操案例

像这样一个5个字段9行的数据表。其中项目字段是有多个固定分类的。

部门SKU月份项目
运营五部HHHH001202012目标单价112
运营五部HHHH001202012目标日销212
运营五部HHHH001202012目标转化312
运营五部HHHH001202011目标单价111
运营五部HHHH001202011目标日销211
运营五部HHHH001202011目标转化311
运营五部HHHH001202010目标单价110
运营五部HHHH001202010目标日销210
运营五部HHHH001202010目标转化310

我们希望把项目和项目对应的值转成列,也就是转换成这样的效果。

部门SKU月份

目标单价

目标日销

目标转化

运营五部

HHHH001

202011

111

211

311

运营五部

HHHH001

202012

112

212

312

运营五部

HHHH001

202010

110

210

310


方法一:

直接使用ETL添加行转列操作。

image.png

①选择操作列和填充列

案例中我们要将项目和值两个字段对应的行转成列,项目是转换后的列名,值是新列中填充的数据

image.png

②选择值的聚合类型

image.png

③添加主键

image.png

④新建列

新建列也就是设置新的列名和原始行的值之间的对应关系,如果不变也可以直接勾选上新建列的名称同原始行的值。

image.png


方法二:

通过SQL处理

image.png

PIVOT(SUM(`[新列中填充的值]`)FOR `[需要转换的列]` in ('[转换的列名]','[转换的列名]'......))

使用pivot函数,多个列名用英文逗号隔开。

image.png

最后得到的结果

image.png


    您需要登录后才可以回复