52
BigQueryを始めてみよう! Google Analytics データを活用する 福田 Google Cloud Platform セールスエンジニア Google for Work 部門 1

BigQueryを始めてみよう - Google Analytics データを活用する

Embed Size (px)

Citation preview

Page 1: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを始めてみよう!Google Analytics データを活用する

福田 潔

Google Cloud Platform セールスエンジニア

Google for Work 部門

1

Page 2: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery とは

● 億件レベルの大規模データセットに対する高速クエ

リー

● 分析用のデータウェアハウス

○ NO DELETE/UPDATE

● SQLで操作

● セットアップ、パフォーマンスチューニングやクラスタ

拡張といったインフラ作業不要

● ストレージ容量無制限。自動スケールアウト

2

Page 3: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery とは

● BIツールを使って非技術者でも操作可能

○ Tableau, QlickView, Google Spreadsheet / Microsoft Excel

● ETL

○ クエリー結果をテーブルに出力可能

○ JSON関数/正規表現関数

● データ処理エンジンとの連携

○ Hadoop, Cloud Dataflow

3

Page 4: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery 参考構成

BigQuery

ログ収集/分析基盤

Cloud Logging

App EngineAnalytics Server

Google Analytics

Compute Engine

On-premise / 他社クラウドGoogle

Spreadsheet

Stream API

File

4

Page 5: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

5

Page 6: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

ユーザ・インタフェース

● GUI BigQuery 管理コンソール(https://bigquery.cloud.google.com)

● CLI(bqコマンド)

● Cloud Datalab (NEW!)

● API (RESTful API + 各種言語ライブラリ)

● 3rd パーティツール (Tableau, Qlikview, R, etc. )

6

Page 7: BigQueryを始めてみよう - Google Analytics データを活用する

7

Page 8: BigQueryを始めてみよう - Google Analytics データを活用する

Google confidential | Do not distribute

BigQuery UIBigQuery UIBigQuery UI

17億件(72.7GB)のフルスキャンが6.7秒!

8

Page 9: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

bq コマンド

● Python ベースのコマンドラインツール

● Google Cloud SDK にバンドル (link)

● bq コマンドの主な機能

○ cp : テーブルのコピー

○ extract : ファイル出力

○ insert : 行の挿入

○ load : ファイルのロード

○ query: クエリーの実行

○ rm: テーブルの削除

$ bq query ‘select count(*) from publicdata:samples.shakespeare’

9

Page 10: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

bq コマンド

# load$ bq load dataset.table ./data.csv ./schema.json # insert$ bq insert dataset.table /tmp/mydata.json

# query bq query ‘select count(*) from publicdata:samples.natality’

# extract$ bq extract --destination_format=NEWLINE_DELIMITED_JSON 94949352.ga_sessions_20150930 gs://bucketname

10

Page 11: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

API

● RESTful API

curl -H "$(python auth.py)" \ -H "Content-Type: application/json" \ -X POST \ -d {'jobReference': { \ 'jobId': 'job_1429217599', \ 'projectId': 'bigquery-e2e'}, \ 'configuration': { \ 'query': { \ 'query': 'SELECT ...’}}} \ "https://www.googleapis.com/bigquery/v2/projects/bigquery-e2e/jobs"

11

Page 12: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

Google API Client Library

https://cloud.google.com/bigquery/client-libraries12

Page 14: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

3rd パーティ製ツール

14

Page 15: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

Cloud Datalab

15

Page 16: BigQueryを始めてみよう - Google Analytics データを活用する

Thank you!

ハンズオン1 (30分) ・Google Cloud Platformプロジェクト作成・請求情報の設定・BigQuery のサンプルクエリーを実行・BigQuery にデータをロードする

16

資料: http://goo.gl/ua5fQw

Page 17: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

プロジェクトの構造

プロジェクト

データセット

テーブル

1

*

*

1

プロジェクトメンバーの権限として ACL可能

テーブルを束ねる概念データセット単位で共有設定が可能

17

Page 18: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

ジョブ

● BigQueryは処理の単位をジョブとして管理

$ bq ls -a -j jobId Job Type State Start Time Duration -------------------------------------------- ---------- --------- ----------------- ---------- job_WFk8LFLjxBABcv595_77PfRAPus query SUCCESS 29 May 15:30:02 0:00:00 job_lYDOJYrbdwKXwSxRpWh6QhfNWpE query SUCCESS 29 May 14:51:46 0:00:01 job_CzrUdmhK9a95wuIGPeDAObUe5dg query SUCCESS 29 May 09:57:12 0:00:00

18

Page 19: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryを使ってみよう

ジョブ

● BigQueryは処理の単位をジョブとして管理

$ bq --format json show -j job_WFk8LFLjxBABcv595_77PfRAPus{"status":{"state":"DONE"},"kind":"bigquery#job","statistics":{"query":{"cacheHit":true,"totalBytesProcessed":"0"},"endTime":"1432881002581","creationTime":"1432881002386","totalBytesProcessed":"0","startTime":"1432881002509"},"jobReference":{"projectId":"fukudak-playground","jobId":"job_WFk8LFLjxBABcv595_77PfRAPus"},"etag":"\"Gn3Hpo5WaKnpFuT457VBDNMgZBw/byQrtfxSXA8MpoOtROYPvCfyNmE\"","user_email":"[email protected]","configuration":{"query":{"useQueryCache":true,"destinationTable":{"projectId":"fukudak-playground","tableId":"anon656e2eb1f794dbeb3a4233962b14d8418e618b74","datasetId":"_ccf1fa0a59a1479e1ec782cce6708e9edf3984dc"},"priority":"INTERACTIVE","writeDisposition":"WRITE_TRUNCATE","createDisposition":"CREATE_IF_NEEDED","query":"SELECT\n count(*)\nFROM\n [bigquery-samples:wikimedia_pageviews.201201];"}},"id":"fukudak-playground:job_WFk8LFLjxBABcv595_77PfRAPus","selfLink":"https://www.googleapis.com/bigquery/v2/projects/fukudak-playground/jobs/job_WFk8LFLjxBABcv595_77PfRAPus"}

19

Page 20: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

BigQuery SQLの特徴

● SELECTのみ

● SQLライクな構文 (ビッグデータを扱う

ために拡張)

● クエリー対象のテーブル指定

○ カンマによるUNION

○ テーブルワイルドカード関数

● ネストテーブル

● 集計関数

○ テーブル集計、グループ集計、ス

コープ集計

● 日付/時刻関数

● IP関数, URL関数

● JSON関数 / 正規表現関数

● 文字列関数

● ウィンドウ関数

20

Page 21: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

SQLライクな構文

● BigQuery クエリーリファレンス

○ 英語版、日本語版

21

Page 22: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

クエリー対象のテーブル指定

SELECT foo FROM table1, table2, table3SELECT foo FROM (SELECT * FROM table4)

● テーブルをカンマでつなげるだけでUNIONとして機能

● サブクエリー

22

Page 23: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

クエリー対象のテーブル指定

● テーブルワイルドカード関数

● クエリー対象のテーブルをテーブルワイルドカード関数にて指定することが可能

○ 日次指定 : TABLE_DATE_RANGE(), TABLE_DATE_RANGE_STRICT()

○ テーブル名のパターンマッチング : TABLE_QUERY()

23

Page 24: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

概算値を返す関数

● COUNT()

● 性能と正確性のトレードオフ

● 正確にカウントするには

○ EXACT_COUNT_DISTINCT

24

Page 25: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

EACH 句

● 大きなデータを扱う場合には、シャッフルフェーズを指示する必要がある

○ GROUP EACH BY (グループの数が非常に大きい場合)

○ JOIN EACH (JOINするテーブルが大きい場合)

● 将来的には意識しなくてよくなる

25

Page 26: BigQueryを始めてみよう - Google Analytics データを活用する

Google confidential | Do not distribute

電話番号はネストした項目。 ”RECORD”型として指定する。PhoneNumberという親要素の下に、areaCodeとnumberという子要素が存在する

モードを”REPEATED”とすると繰り返し可能なデータになる

ネスト/繰り返しフィールド

26

Page 27: BigQueryを始めてみよう - Google Analytics データを活用する

Google confidential | Do not distribute

phoneNumber

children citiesLived

繰り返し項目

ネスト/繰り返しフィールド

27

Page 28: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

● FLATTEN

○ 繰り返し値を展開(FLATTEN)する ー それぞれの値毎に一行のレコードが生成される

○ BigQuery はネストデータを扱うときに自動的に FLATTENする

○ 2つ以上の繰り返し項目を扱う場合には FLATTEN句が必要なる

...(FLATTEN ([project_name:]datasetId.tableId, flattenField))..

...(FLATTEN (subselect_clause, flattenField))..

28

Page 29: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

29

この例では繰り返し項目が一つだけ(citiesLived.place) なのでFLATTENは必要なし

Page 30: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

別の繰り返し項目を使って条件を追加

30

Page 31: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

31

childrenを明示的にFLATTENEDする必要あり。

Page 32: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

ChildrenChildrenName

Children

ChildrenCitiesLivedCitiesLivedYearsLivedYearsLivedYearsLived

● WITHIN○ WITHIN キーワードは、レコード内の子、複数値フィールド、ネストされたフィールドを対象とする集

計関数と併用する

● WITHIN RECORD○ レコードに対して適用する

● WITHIN NODE○ ノードに対して適用する

32

Page 33: BigQueryを始めてみよう - Google Analytics データを活用する

BigQueryのSQL

ネスト/繰り返しフィールド

SELECT fullName, count(children.name) WITHIN RECORD

FROM [dataset.tableId]

SELECT fullName,

count(citiesLived.place) WITHIN RECORD,

citiesLived.place,

count(citiesLived.yearsLived) WITHIN citiesLived

FROM [dataset.tableId]

|- fullName: string (required) +- children: record (repeated) | |- name: string | |- age: integer +- citiesLived: record (repeated) | |- place: string | +- yearsLived: integer (repeated)

33

Page 34: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

34

Page 35: BigQueryを始めてみよう - Google Analytics データを活用する

How BigQuery export works

Report UI

Hit data Session dataSessionizer

AggregateAggregated

DataAggregated

DataAggregated

data

Processing and Configuration Overview - Analytics Help

Page 36: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics - Data Model

http://www.google-analytics.com/r/collect?v=1&_v=j30&a=219673342&t=event&ni=1&_s=1&dl=http%3A%2F%2Fanalytics-ja.blogspot.jp%2F&ul=en-us&de=UTF-8&dt=%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%20%E6%97%A5%E6%9C%AC%E7%89%88%20%E5%85%AC%E5%BC%8F%E3%83%96%E3%83%AD%E3%82%B0&sd=24-bit&sr=1440x900&vp=1913x610&je=1&fl=15.0%20r0&ec=Acquisition&ea=Landing&el=%2F&_utma=26193005.636003885.1415289027.1415689785.1415856818.4&_utmz=26193005.1415289027.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)&_utmht=1415856822038&_u=eDCCgAQEY~&jid=1552417565&cid=636003885.1415289027&tid=UA-24471868-5&_r=1&gtm=GTM-QG2Q&cd6=636003885.1415289027&z=1856167368

http://www.google-analytics.com/r/collect?v=1&_v=j30&a=219673342&t=event&ni=1&_s=1&dl=http%3A%2F%2Fanalytics-ja.blogspot.jp%2F&ul=en-us&de=UTF-8&dt=%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%20%E6%97%A5%E6%9C%AC%E7%89%88%20%E5%85%AC%E5%BC%8F%E3%83%96%E3%83%AD%E3%82%B0&sd=24-bit&sr=1440x900&vp=1913x610&je=1&fl=15.0%20r0&ec=Acquisition&ea=Landing&el=%2F&_utma=26193005.636003885.1415289027.1415689785.1415856818.4&_utmz=26193005.1415289027.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)&_utmht=1415856822038&_u=eDCCgAQEY~&jid=1552417565&cid=636003885.1415289027&tid=UA-24471868-5&_r=1&gtm=GTM-QG2Q&cd6=636003885.1415289027&z=1856167368

Page 37: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics - Data Model

Page 38: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

スキーマ

● 1セッション = 1レコード

● 入れ子のデータ構造

○ totals○ traffic source○ device○ geonetwork○ hits

■ page■ product■ transaction■ item■ eventInfo ...

38

Page 39: BigQueryを始めてみよう - Google Analytics データを活用する

Thank you!

ハンズオン2 (20分)

・Google アナリティクス サンプル・データの設定・Google アナリティクス データに対するクエリ

39

資料: https://goo.gl/S2yvhy

Page 40: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

ディメンジョンあたりの集計

40

Page 41: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

ディメンジョンあたりの集計

ブラウザ種類毎にセッション数、ページビュー数を集計する

ディメンジョン

指標

41

Page 42: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

ディメンジョンあたりの平均直帰率

42

Page 43: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

ディメンジョンあたりの平均直帰率

43

Page 44: BigQueryを始めてみよう - Google Analytics データを活用する

Google Analytics データ

Cookbook

44

Page 45: BigQueryを始めてみよう - Google Analytics データを活用する

ベスト・プラクティス

45

Page 46: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery ベスト・プラクティス

● 必要なデータのみをクエリーする

○ 必要なカラムのみ

○ テーブルを日次/月次等に分割し、必要なテーブルのみをクエリー対象とする

● 非正規化するほうが効率が良い

● キャッシュを利用

● マスターデータはテーブル更新 (Atomic)

● データセット単位で共有することが可能

● 中間テーブルを活用する

46

Page 47: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery 注意事項

● responseTooLarge 応答結果が大きすぎる

○ 圧縮後128MBまで -> 別テーブルに出力する

● resourcesExceeded リソースが足りない

○ GROUP EACH BY, EACH JOIN … ON

● quotaExceeded クォータを超えてしまう

○ クォータに注意

47

Page 48: BigQueryを始めてみよう - Google Analytics データを活用する

● 1 TB / 月間 無償

● $5 / TB● 必要なカラムのみ全量

処理されれる

BigQuery コスト

● $20 / TB / 月間 ● ストリーミング :  $0.01 / 200MB

● バッチロード : 無償

クエリー課金 ストレージ データ投入

48

Page 49: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery 参考URL (1/2)

● オンラインマニュアル

○ https://cloud.google.com/bigquery/what-is-bigquery

● クエリーリファレンス

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

○ http://bqjpreference.appspot.com/ (日本語版)

● BigQuery Client Library

○ https://cloud.google.com/bigquery/client-libraries

● サポート

○ https://cloud.google.com/bigquery/support

49

Page 51: BigQueryを始めてみよう - Google Analytics データを活用する

Google Cloud Platform

BigQuery まとめ

● 大量データに対するクエリーが爆速

● 基幹サービスに影響を与えないで気軽に使える

● 導入コストが極めて低い (Try and Error しながら進めていける)

● 容量を気にしなくて良い (今まで捨てなければならなかったデータを保持できる)

● Google Analytics のデータは自動的に入ってくる

51

Page 52: BigQueryを始めてみよう - Google Analytics データを活用する

Thank you!

ありがとうございました

52