39
Google BigQueryを つかってみた! PerlCasual#06 2014/10/24 Yusuke Wada a.k.a. yusukebe

Google BigQueryを使ってみた!

Embed Size (px)

DESCRIPTION

PerlCasual #06 2014/10/24 Yusuke Wada a.k.a. yusukebe

Citation preview

Page 1: Google BigQueryを使ってみた!

Google BigQueryを つかってみた!

PerlCasual#06 2014/10/24

Yusuke Wada a.k.a. yusukebe

Page 2: Google BigQueryを使ってみた!

2つの問題意識

Page 3: Google BigQueryを使ってみた!

1. 開発サイドから• 例えばアクセスログが膨らんで活用できない

1.サイズが大きい

2.分散されている

3.量が多いので解析するのが難しい

• 何か困った時に過去のログが使えない...

大きなログを簡単に追いたい!

Page 4: Google BigQueryを使ってみた!

2. ビジネスサイドから• 例えば行動ログ的な細かい指標が無い

1.データベース上の静的な情報のみ

2.Google Analyticsは非常に優秀だが...

3.ユーザーに紐付く情報を解析したい

指定したログを貯めてディレクターの人

でも解析・分析でできるようにしたい!

Page 5: Google BigQueryを使ってみた!

と、その時...

巷でビッグクエリーという言葉を

聞くようになる...

Page 6: Google BigQueryを使ってみた!

とか!

Page 7: Google BigQueryを使ってみた!

Google BigQueryは巨大なデータを様々

なフォーマットで放り込めてSQLライ

クなクエリで問い合わせが可能でチョー

高速!120億レコードに対するクエリ

を5秒でフルスキャン!ステキー しか

も利用料も安いと来たもんだっ!

Page 8: Google BigQueryを使ってみた!

ってことで

Google BigQueryを使ってみた話+α

Page 9: Google BigQueryを使ってみた!

データを用意する

• RPCへのアクセス+ユーザー識別子

• 一旦JSON形式でファイルへ書き出す

• 集約サーバーに投げる

• fluent-plugin-bigquery で BigQuery へ挿入

業務で使っているログの場合

Page 10: Google BigQueryを使ってみた!

APIサーバ APIサーバ APIサーバ

集約サーバ

Google BigQuery

Page 11: Google BigQueryを使ってみた!

データを用意する

• Streaming APIの「statuses/sample」を利用

• publicなツィートのほんの一部を取得可能

• fluent-plugin-twitter で簡単に

• 最後はやはり fluent-plugin-bigquery を使う

デモのためにTwitter APIを利用する

Page 12: Google BigQueryを使ってみた!

Tweet収集サーバ

Google BigQuery

Page 13: Google BigQueryを使ってみた!

スキーマは必要

Page 14: Google BigQueryを使ってみた!
Page 15: Google BigQueryを使ってみた!

Google BigQueryは ブラウザから色々できる

Page 16: Google BigQueryを使ってみた!

例えば...• BigQuery Browser Tool (後述)

• Googleアカウントベースで権限の追加

• 利用状況の確認

• APIクライアントの作成や削除

• APIリクエストのモニタリング

• 課金の管理フルマネージドで便利!

Page 17: Google BigQueryを使ってみた!

独自のSQLで問い合わせる

https://cloud.google.com/bigquery/query-reference

Page 18: Google BigQueryを使ってみた!

ここで BigQuery Browser Tool 登場

Page 19: Google BigQueryを使ってみた!

SELECT COUNT(*) AS tweet_countFROM [twitter-stream-sample:twitter.tweet]

ちなみに10月18日(土)から収集開始

Page 20: Google BigQueryを使ってみた!

22,289,497件 / 7.5秒

Page 21: Google BigQueryを使ってみた!

Browser Toolで出来ること• Queryの実行と結果を表形式で見る

• Queryの保存とロード

• CSV形式での結果のダウンロード

• 新しいテーブルやDataSetの作成など

必要最小限の機能が揃っている

さらにBigQuery Connector for Excelを使えばExcelとの連動も可能

Page 22: Google BigQueryを使ってみた!

例えばディレクターが新しいKPIを図るためにQueryを 構築することも考えられる

Page 23: Google BigQueryを使ってみた!

以上 Google BigQuery を使ってみた話終わり

One More Thing

Page 24: Google BigQueryを使ってみた!

今作ってるモノ

• 元々業務でBigQueryの結果を可視化するため

• Browser Toolのある種拡張

• BigQueryのThird-partyサービスは複雑で高価

• 目指すところはKibanaっぽいところ?

BigView For Visualizing Google BigQuery

Page 25: Google BigQueryを使ってみた!
Page 26: Google BigQueryを使ってみた!

BigViewで出来ること• Googleアカウントでのログイン

• 権限を持つプロジェクトへのクエリの実行

• とある条件下での結果のチャート表示

• Pieチャート

• Lineチャート

• クエリの保存 (未実装)

Page 27: Google BigQueryを使ってみた!

BigViewを使ってみる

Page 28: Google BigQueryを使ってみた!
Page 29: Google BigQueryを使ってみた!

1時間ごとのツイート数をグラフにしてみる

Page 30: Google BigQueryを使ってみた!

SELECT USEC_TO_TIMESTAMP((UTC_USEC_TO_HOUR(created_at))) AS time, COUNT(*) AS tweet_countFROM [twitter-stream-sample:twitter.tweet]GROUP BY timeORDER BY time

Page 31: Google BigQueryを使ってみた!
Page 32: Google BigQueryを使ってみた!

この辺はデータが欠落してます><

Page 33: Google BigQueryを使ってみた!

ユーザーの使用言語の割合を チャートにしてみる

Page 34: Google BigQueryを使ってみた!

SELECT user_lang, COUNT(user_lang) AS lang_countFROM [twitter-stream-sample:twitter.tweet]GROUP BY user_langORDER BY lang_count DESC

Page 35: Google BigQueryを使ってみた!
Page 36: Google BigQueryを使ってみた!
Page 37: Google BigQueryを使ってみた!

何らかのライセンスで パブリックに使ってもらうかもしれません!

Page 38: Google BigQueryを使ってみた!

まとめ

Page 39: Google BigQueryを使ってみた!

• Google BigQueryはブラウザで色々できちゃって

楽だし安いそして早い/速い

• 実装(連携?)はおおよそfluentdにお任せ

• 活用できてないデータを活かすことが出来る

• Browser ToolでディレクターがSQLを書く?

• BigViewでシンプルなデータの視覚化を目指す

• Googleの回し者ではないです ^^