でHiveクエリを書くとき - TD_X_RANKを利用しよう
7722 ワード
はじめに
Treasure DataはHiveの関数以外に独自関数を。。。(略
ドキュメントを見れば、ここから下は不要だ。
TD_X_RANK
とあるグループの中で並べられた要素に番号を振っていく関数です。まず、Order byかCluster byとかで関連カラムを並べ替える必要があります。全体に順番つけるの無理なので注意してください。
Signature
long TD_X_RANK(keys)
利用例
下のような成績データがあります。AクラスとBクラスの成績です。
これをクラス、成績で並べ替えます。
time | class | id | score |
---|---|---|---|
2015-06-09 | A | 1 | 90 |
2015-06-09 | A | 2 | 95 |
2015-06-09 | A | 3 | 90 |
2015-06-09 | A | 4 | 30 |
2015-06-09 | A | 5 | 40 |
2015-06-09 | A | 6 | 75 |
2015-06-09 | A | 7 | 99 |
2015-06-09 | A | 8 | 89 |
2015-06-09 | A | 9 | 75 |
2015-06-09 | A | 10 | 80 |
2015-06-09 | B | 1 | 50 |
2015-06-09 | B | 2 | 95 |
2015-06-09 | B | 3 | 90 |
2015-06-09 | B | 4 | 90 |
2015-06-09 | B | 5 | 40 |
並べ替えます。td_x_rankに指定するのはclassなんで注意してください。scoreを囲みたくなりますが、class....
select class,td_x_rank(class) as rank , score,id
from ( select class, score ,id from testx order by class ,score desc,id) t
各クラスで成績が良い順に番号が付きましたね!
class | rank | score | id |
---|---|---|---|
A | 1 | 99 | 7 |
A | 2 | 95 | 2 |
A | 3 | 90 | 1 |
A | 4 | 90 | 3 |
A | 5 | 89 | 8 |
A | 6 | 80 | 10 |
A | 7 | 75 | 6 |
A | 8 | 75 | 9 |
A | 9 | 40 | 5 |
A | 10 | 30 | 4 |
B | 1 | 95 | 2 |
B | 2 | 90 | 3 |
B | 3 | 90 | 4 |
B | 4 | 50 | 1 |
B | 5 | 40 | 5 |
まとめ
なんで同じ点数なのに番号増えているの?的な話は下の記事を読むとさらに理解が深まります。(私が書いたんじゃないですが。。)
Author And Source
この問題について(でHiveクエリを書くとき - TD_X_RANKを利用しよう), 我々は、より多くの情報をここで見つけました https://qiita.com/KamekoKameKame/items/38a9d9b5e521a36a821d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .