impala 将列转置为行
impala transpose column to row
如何在 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
我可以使用地图和 collect_list 在 Hive 中完成。 Impala.
我该怎么做
使用 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()
。
如何在 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
我可以使用地图和 collect_list 在 Hive 中完成。 Impala.
我该怎么做使用 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()
。