kettle中的列转行使用
最近在一张3千万的mysql表中汇总数据,
数据结构如下:
origin | time | user |
---|---|---|
1 | 2020-03-01 | lee |
2 | 2020-03-01 | ken |
3 | 2020-03-01 | lyo |
1 | 2020-03-02 | lee |
2 | 2020-03-02 | ken |
3 | 2020-03-02 | lyo |
现在需要按origin和time汇总计算user的个数,假设origin字段含义如下:
1 : Android 2: iOS 3: PC
需求是要汇总后横向展示用户个数
time | Android | iOS | PC |
---|---|---|---|
2020-03-01 | |||
2020-03-02 |
一开始使用left join + 子查询的方式将每组数据连接为一个新的字段,但是由于表数据量大多次自查询非常慢,所以用kettle自带的列转行功能,只需一次查询汇总后剩下的由kettle帮忙转成行
账号活跃的sql:
SELECT origin, time, COUNT(DISTINCT user) AS user_count FROM t_log_user
GROUP BY time, origin
ORDER BY time, origin
这里一定要排序,否则列专行的数据不对
查询结果如下:
列转行空间设置如下:
转换后输出如下: