在配置单元中使用QUALIFY Row_Number

时间:2013-07-09 04:56:31

标签: sql hive window-functions

我正在使用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。我还用Distribute All替换Over Partition并排序依据。但我坚持QUALIFY。

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

1 个答案:

答案 0 :(得分:6)

带有分析功能的QUALIFY(ROW_NUMBER(),SUM(),COUNT(),... over(partition by ...))只是包含分析值的子查询的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中可用