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

検索を行ったところ、ハイブで Row_Sequence の UDF が見つかりました。また、Over Partition を Distribute All と sort By に置き換えました。しかし、私はQUALIFYにこだわっています。

上記をハイブに変換するアイデアは本当に高く評価され、私たちを大いに助けてくれます。

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 に答える