如何在同一个配置单元 table 中使用派生列?

How to use derived columns in same hive table?

能否请您帮我查询一下。

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

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

员工转型table

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

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

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

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

  1. 查找 sum(ABS_A)/sum(ABS_B) - 列名称将为平均值。

因此最终 table emp 将包含以下几列

1.A

2.B

3.ABS_A

4.ABS_B

5.Average

如何在 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, B, ABS(A) as ABS_A, ABS(B) as ABS_B, `date`,
       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;