OLAP関数

テレコム業界のCDR(Call Detail Record)の解析をOracleからHiveにマイグレーションした資料を見つけたのでめもっておく。

この資料を見つけたきっかけはp22にあるOracleのrank() over (partition by ... order by ...)みたいなOLAP関数をHiveでどのように書き変えるかの部分を見たからだ。

そもそもオレはDB弱者でOLAP関数なぞ使った事も無いし知らなかったのだがWeb+DBのミックさんの連載を読んで便利というか直感的だなあと思ったものだ。

MySQLにはOLAP関数が無いらしいので同じ事を実現しようとすると相関サブクエリになったりして可読性はあんま良くないと思う。

具体例はこの辺。

Hiveで処理する場合はOracleと違ってまだOLAP関数がないのでうごうごとやらないといけない。

ただHiveも0.7になってRank関数は実装されたようだ。
[HIVE-1304] add row_sequence UDF - ASF JIRA

しかしここで指摘されているようにアンドキュメントなようだw

この辺の集計処理をHiveでやるのかそれとも例えばSqoopでPostgreSQLにデータを取り込んでRDBMSに任せるのかとかいろいろとやり方はありそうだ。