7

我正在将 Teradata 转换为 Hive(版本 0.10.0)。

Teradata 查询:

QUALIFY ROW_NUMBER() OVER (PARTITION BY ADJSTMNT,SRC_CMN , TYPE_CMD,IOD_TYPE_CD,ROE_PST ,ORDR_SYC,SOR_CD,PROS_ED ORDER BY ADJSTMNT )=1

我进行了搜索,并在 hive 中找到了 Row_Sequence 的 UDF。我还将 Over Partition 替换为 Distribute All 和 sort By。但我被 QUALIFY 困住了。

任何将上述内容转换为 hive 的想法都非常感谢,并将对我们有很大帮助。

4

1 回答 1

9

具有分析函数 (ROW_NUMBER(), SUM(), COUNT(), ... over (partition by ...)) 的 QUALIFY 只是包含分析值的子查询上的 WHERE。

例如:

select A,B,C
from X 
QUALIFY  ROW_NUMBER() over (...) = 1

相当于:

select A,B,C
from (
   select A,B,C, ROW_NUMBER() over (...) as RNUM
   from X
) t
where RNUM = 1

注意:分析功能在 Hive 0.12 中可用

于 2014-01-12T21:38:40.217 回答