Hive のデータ型には配列があるんだけど、その配列をサクっと集計する方法に LATERAL VIEW というものがある。
マニュアルページのサンプルを抜粋するとこんな感じ。pageid
は文字列型、adid_list
カラムが配列型になっている。
pageid | adid_list |
---|---|
front_page | [1, 2, 3] |
contact_page | [3, 4, 5] |
SELECT pageid, adid
FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid;
pageid (string) | adid (int) |
---|---|
"front_page" | 1 |
"front_page" | 2 |
"front_page" | 3 |
"contact_page" | 3 |
"contact_page" | 4 |
"contact_page" | 5 |
さらにここから、それぞれの adid
が出てきた数を求めるクエリがこうなる。
SELECT adid, count(1)
FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid
GROUP BY adid;
int adid | count(1) |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
4 | 1 |
5 | 1 |
動作としては、こういうことができるのがありがたいのだけど、FROM
句の構文がなんかイマイチしっくりこなくて覚えられない。FROM
句の pageAds
は元のテーブル名なので、まぁ、そこにいるのは良い。LATERAL VIEW
の後ろにある adTable
はテーブルのエイリアス名とのことなので、そういうものかなという気もしなくもない。ただ、その先に adid
というカラム名のエイリアスが入ってくるのがうまく理解できない。
そこ、テーブル名が並ぶ場所じゃないのかよ!という意識が前面に来て、なんかモヤモヤしてしまう。
なんか理解が足りないんだろうなぁ。
2013年1月にクロコスへ入社してから、1年と9ヶ月くらい。今日、ちょっと大きな動きがあった。
内容は「ヤフー株式会社への吸収合併に関するお知らせ」に詳しいのだけれど、親会社であるヤフー株式会社に吸収合併されることになったのだ。
11月にはクロコスが消滅する。