如何解决如何在同一个 hive 表中使用派生列?
你能帮我下面的查询吗。
假设有表员工和列 A 、 B 和日期列。
我必须将数据从表employee 加载到另一个表emp 并应用以下转换
Employee 表中的转换
-
A 列的绝对值 -(emp 中的列名将是 ABS_A)
-
B 列的绝对值 -(emp 中的列名将是 ABS_B)
-
查找给定日期列的
sum(ABS_A)
4. 查找给定日期列的 sum(ABS_b)
- 查找
sum(ABS_A)/sum(ABS_B)
- 列名称将为平均值。
所以决赛桌 emp 将有以下几列
1.A
2.B
3.ABS_A
4.ABS_B
5.平均
如何在 hive 中处理这样的派生列?
我尝试了以下查询,但现在可以使用了。谁能指导我。
insert overwrite into emp
select
A,B,ABS(A) as ABS_A,ABS(B) as ABS_B,sum(ABS_A) OVER PARTION BY DATE AS sum_OF_A,sum(ABS_B) OVER PARTTION BY DATE AS sum_of_b,avg(sum_of_A,sum_of_b) over partition by date as average
from employee
解决方法
Hive 不支持在同一子查询级别使用派生列。使用子查询或函数代替列别名。
insert overwrite table emp
select A,B,ABS_A,ABS_B,sum_OF_A,sum_of_b,`date`,sum_OF_A/sum_of_b as average
from
(
select A,ABS(A) as ABS_A,ABS(B) as ABS_B,sum(ABS(A)) OVER (PARTTION BY DATE) AS sum_OF_A,sum(ABS(B)) OVER (PARTTION BY DATE) AS sum_of_b
from employee
)s;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。