最近在一张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帮忙转成行
kettle中的列转行使用
账号活跃的sql:
SELECT origin, time, COUNT(DISTINCT user) AS user_count FROM t_log_user
GROUP BY time, origin
ORDER BY time, origin
这里一定要排序,否则列专行的数据不对
查询结果如下:
kettle中的列转行使用
列转行空间设置如下:
kettle中的列转行使用
转换后输出如下:
kettle中的列转行使用

相关文章:

  • 2021-08-22
  • 2021-06-28
  • 2022-12-23
  • 2021-07-14
  • 2022-12-23
  • 2021-08-25
  • 2021-04-03
猜你喜欢
  • 2021-10-29
  • 2022-12-23
  • 2021-05-20
  • 2021-04-12
相关资源
相似解决方案