Impala 换位列到行

7hiiyaii  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(387)

如何在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 那样,不在Hive里

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

我可以在Hive中使用Map和收集列表。我在 Impala 怎么办。

w3nuxt5m

w3nuxt5m1#

使用 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() 如果每个用户有多条记录,请输入一天,然后需要求和。

相关问题