はじめに
弊社ではユーザーの一部アクションログを GoogleTagManager(GTM)と組み合わせて GoogleAnalytics(GA)にイベント情報を保存し分析をしています.
今回はGTMに関しては触れませんが, 例としてGA上に保存されたイベント情報を BigQuery に転送してみます。
イベント情報に限らず PageView など様々なGA上のデータを取得して転送することが出来るため, 発想次第では面白いデータ分析ができそうです.
GAのイベント情報とは
弊社では, 以下のようなイメージでユーザーの行動をイベント計測しています.
- イベントカテゴリ:施策ごとのユニークな管理番号(xxx_profile_search)
- イベントアクション:イベント種別(click, load)
- イベントラベル: イベント分類(ユーザーID)
GAのイベント トラッキングについては, 以下のページを参考ください。
BigQueryへイベントデータを転送する
みんな大好き embulk を使ってアナリティクス上のデータをインプットソースとしてBigQueryへアウトプットします.
サービスアカウントを発行する
まず, 認証のためのアカウントを発行します。
自身のプロジェクトを選択してサービスアカウント を発行します.
APIを有効にする
該当するAPIを有効にします.
GAにサービスアカウントを登録する
Google Analyticsの管理画面 対象のビューのユーザーに, さきほど作成したサービスアカウントを 「表示と分析の」 権限で追加してください。
Gemのインストール
Google Analyticsからデータをインプットし, BigQueryへデータをアウトプットするために以下のGemを使います.
embulk gem install embulk-input-google_analytics
embulk gem install embulk-output-bigquery
設定ファイルの作成
in:
type: google_analytics
json_key_content: |
{
"type": "service_account",
"project_id": "....",
"private_key_id": "....",
"private_key": "-----BEGIN PRIVATE KEY-----\n..........................\n-----END PRIVATE KEY-----\n",
"client_email": ".....",
"client_id": ".........",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": ".........."
}
view_id: 123456789 # your google_analytics view_id
time_series: "ga:date"
# https://developers.google.com/analytics/devguides/reporting/core/dimsmets
dimensions:
- "ga:eventCategory"
- "ga:eventAction"
- "ga:eventLabel"
metrics:
- "ga:totalEvents"
start_date: "2018-04-10"
end_date: "2018-04-11"
out:
type: bigquery
mode: replace
auth_method: json_key
json_keyfile: example/your-project.json
auto_create_dataset: true
auto_create_table: true
dataset: google_analytics
table: content_event
compression: GZIP
source_format: CSV
default_timezone: "Asia/Tokyo"
実行してみる
embulk run ga-to-bigquery.yml
以上で, BigQuery上にアナリティクスのデータを転送することができました.
例えば, BigQuery上にサービスDBのユーザーテーブルなど, 各種マスタ・トランザクションテーブルがあると結合してもう少し深ぼった分析が可能になりそうですね.
補足
今回はBigQueryに直接データを転送していますが一度GCSにデータをエクスポートし, GCSを経由させてBigQueryに転送した方がパフォーマンスも良く安定します.