読者です 読者をやめる 読者になる 読者になる

#bq_sushi tokyo #2 に行ってきた

勉強会・ハッカソン

Google Compute Platform のBigqueryについての勉強会の#bq_sushiへ行ってきました。その時のメモです。

eventdots.jp

簡単なまとめ

  • 可視化ツールとして re:dash がよさそう。
  • クエリを書くときにはテーブルデコレータでスキャン量を減らそう。
  • 非エンジニアでも、クエリさえ書ければ目的のデータを出せるので非常に便利。
  • 安い。速い。

発表メモ

運用現場におけるBigqueryの活用

資料: http://www.slideshare.net/yukawabe18/kaizen-platform-bigquery-bqsushi-tokyo-2

  • KAIZEN platform
  • fluentd経由でBQにログを流す
  • クエリ結果をRe:dashでVisualize
  • BQにはIPアドレスからロケーションにマッピングする関数がある
  • Domo(クラウド型のBIツール)で可視化
  • ファネル分析もクエリを書いて行っている
  • RDBをDimension Tableとして使っている
  • BQでアクセス解析を行うメリット
    • VisualizeToolの柔軟性が高い
    • 集計内容を後から変更可能
    • Adhocな分析が可能
  • A/Bテストのログ集計
    • サービスサイトからアクセス用にDynamoDBへ一時間分を格納
    • 生ログはBQへ。
      • 障害や問い合わせの対応に使っている。
      • エンジニアに問い合わせしなくても対応できるようになった。
    • タグの2重貼りの検知・・・LAG関数を使ったクエリ
  • 広告(Ad) x ページデザイン(Web)での最適化にもBQを利用
    • Ad CookieとWeb Cookie SyncもBQでやってみた。
      • 最小のコストでフィジビリするため。
  • リファラのセグメントはログイン前のページのURLを使いたいが、会員IDはログイン後のものを使いたい。
    • FIRST, LAST関数を使ったクエリでやる。
  • まとめ
    • 生データを貯めておけば、力技で何とかなる。
      • やり過ぎると設計がおろそかになる・・・

GCPとBigqueryを用いたIoT基盤の構築

資料: http://www.slideshare.net/hironoriarakawa754/gcpbigqueryiot-55323810

  • Webの流入はわかるようになってきたが、現実世界ではわからない。
    • 赤外線センサーによる検知や画像認識などのソリューションはあるが、まだ決定打となるものはない。
  • 社内食堂などで実験
    • IoTデバイスで測った値と実際に数えた訪問者数の相関係数は0.9ほどで、正確。
  • 4人だが、フルで動けるのは1人のチームで作っている。
  • IoTで必要な機能
    • データの通信方式
      • 4G LTE経由でfluentdでBQへINSERT
    • データの保存・分析基盤
      • BQ
        • 100%のデータは必要ない。99%とれれば十分。
    • 認証基盤・セキュリティ
      • Vault, Brillo OSとかを実験中
    • デバイス管理
  • フロントエンドはKubernetesでコンテナ管理
  • BQについて
    • 不思議なほど価格が安い
  • リアルタイム分析
    • リアルタイム更新のダッシュボードなど
      • Spark Streaming, GCP Dataflow
  • バッチ分析
    • 定期レポートなど
      • BQ
  • オンデマンド分析
    • ユーザーが見たいときに出すデータ
      • 明確なソリューションなし。今のところBQを使っている。
        • ただ、結果のレスポンスがちょっと遅いので、もう少し向いているものがないか検討中。

Bigqueryに足りないもの

  • 足りないもの
    • Visualization
    • Histroyは個人に紐付いている。
    • クエリ実行結果も個人に紐付いているので共有が難しい。
    • スケジュール実行ができない。
    • パイプライン処理
      • ひたすら長いクエリ・・・
  • re:dash
    • BIツールと紹介されているが、Kibanaみたいなもの。
      • 可視化と共有ができる。
    • GCPのイメージが公開されているのですぐに試せる。
    • クエリをforkできる機能が便利。
  • Luigi
    • パイプライン処理
    • タスクの依存関係をPythonで記述できるし、可視化とレポートもできる。

Predictive analysis using Google Analytics Premium and Bigquery

  • Google Analyticsの有料機能にBQへのエクスポート機能がある。
  • アクセス解析におけるKPIの歴史: PV → Session → User
  • デバイスが違ったりすると、同じ人なのに、同じ人とはわからない状態を何とかする。
    • 買った商品が広告されたり。
    • → そこでBQエクスポート
  • GoogleAnalyticsの処理イメージ: Hit data(アクセス) → Sessionizer → Session Data → Aggregate → AggregateData → WebUI
  • Aggregateする前のSession Dataをエクスポートする機能
    • Sessionデータはアクセスデータ(Hit data)をSessionごとにまとめたもの。
  • offlineデータとonlineデータを結合するためにBQエクスポートを使う。
    • GoogleAnalyticsのCookieからとれるGAのIDを保存しておいてひも付けに使う。

M.T.burnのBigquery利用事例

資料: http://cou929.nu/docs/bq_sushi_no2/bq_sushi_no2_mtburn_slide.html

  • ネイティブ広告
  • インフラ専門のエンジニアはいないのでできるだけマネージドサービスで構築
  • BQの用途
    • 広告配信のログ集計など
    • システム運用系のログの調査など
    • プロトタイピングやアドホックな分析
  • テーブル設計
    • 1つのテーブルにINSERT
      • 楽ではあるが、デコレータが使えなかったりPurgeできなかったりする。
    • 月別や日別のテーブルへ。
  • TableDecorator
    • スキャンする範囲を指定することで費用が節約
    • レコードがINSERTされた日時でフィルタリング
      • 障害時などINSERTが遅れたときにかからなかったりするので気をつける。
  • dbq
    • Decoratorを自動で補完してくれる。
    • BQのdryrunを見やすく整形してくれる。
      • dryrunでスキャンするデータ量を知ることができる。

GCPビッグデータまわり最新動向

  • BQのUDF
  • encrypted-bigquery-client
    • 暗号化した状態でBQに保存する。
    • 暗号化されたままでもBQでクエリを発行できる。
  • Dataproc
    • マネージドHadoop, Spark
  • Datalab
    • iPython NotebookのBQ版
    • Datalab上のコードからGoogleAPI(Chart, Mapなど)のライブラリもインポートもできる。

LINQPad with LINQ to BigQuery

資料: http://www.slideshare.net/neuecc/linqpad-with-linq-to-bigquery-desktop-client-for-bigquery

  • LINQPad
    • C#の軽量ScriptEditor
  • LINQでBQにつなげてクエリを書ける。
  • Excelへ出力する機能もある。

組み合わせると便利、Treasure DataとBigQuery

  • TDのクエリ結果をBQにも書き出せるようになった。
  • GCSからのインポートもサポート