【问题标题】:Using QUALIFY Row_Number in hive在 hive 中使用 QUALIFY Row_Number
【发布时间】:2013-07-06 14:05:50
【问题描述】:

我正在将 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 的想法,并将对我们有很大帮助。

【问题讨论】:

    标签: sql hive window-functions


    【解决方案1】:

    具有分析函数(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-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多