【问题标题】:impala transpose column to rowimpala 将列转置为行
【发布时间】:2018-04-30 10:47:08
【问题描述】:

如何在 impala 中将列数据转置为行数据 我尝试了一些在 impala 中不起作用但在 hive 中起作用的解决方案。

Table name : test
Data:
day         name     jobdone
2017-03-25  x_user   5
2017-03-25  y_user   10
2017-03-31  x_user   20
2017-03-31  y_user   1

我希望数据应该像 impala no in hive 中的那样

Required Output Data
 Day           x_user     y_user
 2017-03-05    5          10
 2001-03-31    20         1

我可以在 Hive 中使用 Map 和 collect_list 进行操作。在 Impala 中我该怎么做。

【问题讨论】:

    标签: hive impala


    【解决方案1】:

    使用case + min()max() 聚合:

    select day,
           max(case when name='x_user' then jobdone end) x_user,
           max(case when name='y_user' then jobdone end) y_user
      from test
      group by day;
    

    如果每个用户每天有很多记录并且您需要对它们求和,请使用 sum() 而不是 max()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2017-09-18
      • 2023-03-27
      相关资源
      最近更新 更多