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月にはクロコスが消滅する。