【发布时间】:2021-05-26 10:16:23
【问题描述】:
你能帮我下面的查询吗?
假设有表employee和列A、B和Date列。
我必须将数据从表employee加载到另一个表emp并应用以下转换
Employee 表中的转换
-
A 列的绝对值 -(emp 中的列名将是 ABS_A)
-
B 列的绝对值 -(emp 中的列名将是 ABS_B)
-
查找给定日期列的
sum(ABS_A)
4.查找给定日期列的sum(ABS_b)
- 查找
sum(ABS_A)/sum(ABS_B)- 列名称将为Average。
所以决赛桌 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
【问题讨论】:
-
Tihis: "Find sum(ABS_A)/sum(ABS_B) " 与您的查询不匹配。目前尚不清楚您的理解中什么是平均水平。请提供一些数据示例和预期输出
-
除了派生列的问题之外,平均计算似乎是错误的,它不应该是(按日期分区),因为 sum_of_A 和 sum_of_B 已经在同一个分区上计算(假设它有效),换句话说,每个日期组已经具有相同的 sum_OF_A 和 sum_OF_B。因此,请澄清您期望什么输出,并且最终输出中不存在日期列,这看起来很奇怪,因为总和是针对日期分区计算的。如果最终输出中没有日期,您将获得整个日期组的重复总和。更好地提供数据输入和期望的输出示例
-
感谢您的回复@leftjoin:我已将表格屏幕截图附加到问题中。 “预期输出”应该与“Emp Table”中的一样。
标签: hadoop hive subquery bigdata derived-column