impala将列转置为行

时间:2018-04-30 10:47:09

标签: hive impala

如何将列数据转换为 impala 中的行数据 我尝试了一些在黑斑羚中无效但在蜂巢中工作的解决方案。

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

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

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

我可以使用Map和collect_list在Hive中完成。我怎么能在Impala做。

1 个答案:

答案 0 :(得分:2)

使用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(),您需要将它们相加。