微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在同一个 hive 表中使用派生列?

如何解决如何在同一个 hive 表中使用派生列?

你能帮我下面的查询吗。

假设有表员工和列 A 、 B 和日期列。

我必须将数据从表employee 加载到另一个表emp 并应用以下转换

Employee 表中的转换

  1. A 列的绝对值 -(emp 中的列名将是 ABS_A)

  2. B 列的绝对值 -(emp 中的列名将是 ABS_B)

  3. 查找给定日期列的 sum(ABS_A)

4. 查找给定日期列的 sum(ABS_b)

  1. 查找 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

enter image description here

enter image description here

解决方法

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 举报,一经查实,本站将立刻删除。