Treasure Data が「お年玉分析ガイドブック」なるものをネット上で配布してるのですが、わかりやすくてお役立ちな資料じゃないですか、え、無料なんですか?
・・・ってことでそんな太っ腹な Treasure Data さんの分析ガイドブックのまとめ。
Treasure Data と HiveQL について
Treasure Dataはクラウド型のビッグデータ サービスの一つで、クラウド上にデータを収集・保存し、分析できるプラットフォームです。
す。
Treasure Dataでの分析は、ユーザーが実行する分析クエリを Treasure Data が受け取り、Treasure Data が独自に管理している Hadoopクラスター上で、Hadoop MapReduce フレームワークによってそれらのクエリが実行されるのですが、その際の「分析クエリ」としてサポートされる言語の1つがHiveQLです。
HiveQL の元になっている、Apache Hiveはオープンソースで、ドキュメントもあるのですが、初めて Treasure Data を使う人や慣れてない人にはちょっと敷居が高いかもしれません。
そんな人向けかどうかはわかりませんが、「お年玉分析ガイドブック」なるものが現在ネット上で手に入るのですが、これがなかなかわかりやすくてイイ。
あけましておめでとうございます。2016年もどうぞよろしくお願いいたします。
2016年もデータ活用を進めていただくために、お年玉分析ガイドブック(Hiveガイド)をご用意しました!ダウンロードはこちらから!
https://t.co/Xd8DQUaozg
— Treasure Data Japan (@TreasureDataJP) January 1, 2016
Treasure Data の分析ガイドブックの内容
分析ガイドブックは前半の「概要」というパートで、HiveQL の言語リファレンスの主なものを紹介しつつ、後半では実際の仕事で必要になりそうな、POSデータの分析を想定したシナリオに沿ったクエリの書き方が紹介されてます。
いくつかピックアップすると・・・
Hive Query Languageの概要
いわゆる SELECT によるクエリの説明だが、HiveQL で使える関数や UNION、 JOIN といった複雑なクエリの書き方も紹介されている。 主なコンテンツはこんな感じ。
- SELECTステートメント
- WHERE句を使用したデータのフィルタリング
- DISTINCTを使用した一意の組み合わせの検出
- HiveQLでの関数の使用法
- GROUP BY および集約関数を使用した基本分析
- HAVING句を使用した集約結果のフィルタリング
- LIMITingの結果
- ORDER BYを使用した結果のソート
- UNION ALLを使用した類似テーブルの結合
- JOINステートメントを使用したテーブルのマージ
中でも特に充実してるのは、HiveQL の関数の説明と JOIN の説明部分。
HiveQL での関数の使用法
HiveQL で使える 算術演算子、数学関数(round とか、log とか、exp とか、珍しいのだと factorial(階乗)なども)だけでなく、配列のような複数要素を持つオブジェクトに使える、コレクション関数(map_keys とかmap_values とか)。
あとは、時間系の関数で、UNIX timestamp 形式と日付形式の相互変換する、to_date、unix_timestamp 関数、文字列操作を行うストリング関数など。
JOIN の説明がわかりやすい
SQL に詳しい人にとっては不要かもしれませんが、データ操作に慣れない人にとっては判りにくい 様々な JOIN の区別がわかりやすい。
こんな感じ↓
JOINステートメントを使用したテーブルのマージ
ケーススタディ - POS分析
POS分析を想定した、仮想のデータとユースケースごとにクエリが説明されている。
例えば、次のような要件に対するクエリを HiveQL でどう書けばいいか? みたいな。
質問1 - 顧客から苦情を受けたとします。その顧客の関連情報を調べるために使用できるのは、ポイントカード番号のみで
す。次のカード番号を使用して、顧客に関するすべての顧客情報を確認します。
質問2 - このデータセット全体の合計収益、コスト、および利益幅はいくらでしたか。
質問3 - どの顧客が複数回注文を行い、それらの顧客の中の、アカウントあたりの平均支払額と1回あたりの最大支払額はいく
らですか。
おまけ
より具体的なクエリの書き方とデモのために、HiveQL Example Query Catalog なるものが公開されています。 サンプル データとクエリの実行結果が見れるようになっていて、Treasure Data のアカウントを持っている人ならログインすると実際のクエリも見れます。