ソーステーブルが次の場合、パーティション (またはグループ) ごとに行をランク付けする必要があります。
NAME PRICE
---- -----
AAA 1.59
AAA 2.00
AAA 0.75
BBB 3.48
BBB 2.19
BBB 0.99
BBB 2.50
ターゲットテーブルを取得したい:
RANK NAME PRICE
---- ---- -----
1 AAA 0.75
2 AAA 1.59
3 AAA 2.00
1 BBB 0.99
2 BBB 2.19
3 BBB 2.50
4 BBB 3.48
通常はROW_NUMBER() OVER
関数を使用するため、Apache Hive では次のようになります。
select
row_number() over (partition by NAME order by PRICE) as RANK,
NAME,
PRICE
from
MY_TABLE
;
残念ながら、Cloudera Impala は (現時点では)ROW_NUMBER() OVER
関数をサポートしていないため、回避策を探しています。UDAF をサーバーに展開するよう説得するのは政治的に難しいため、UDAF を使用しないことをお勧めします。