Edited at

Google Analytics(GA)のデータをembulkを使ってBigQueryに転送させる方法

More than 1 year has passed since last update.


はじめに

弊社ではユーザーの一部アクションログを GoogleTagManager(GTM)と組み合わせて GoogleAnalytics(GA)にイベント情報を保存し分析をしています.

今回はGTMに関しては触れませんが, 例としてGA上に保存されたイベント情報を BigQuery に転送してみます。

イベント情報に限らず PageView など様々なGA上のデータを取得して転送することが出来るため, 発想次第では面白いデータ分析ができそうです.


GAのイベント情報とは

弊社では, 以下のようなイメージでユーザーの行動をイベント計測しています.


  • イベントカテゴリ:施策ごとのユニークな管理番号(xxx_profile_search)

  • イベントアクション:イベント種別(click, load)

  • イベントラベル: イベント分類(ユーザーID)

スクリーンショット 2018-04-14 17.38.02.png

GAのイベント トラッキングについては, 以下のページを参考ください。


BigQueryへイベントデータを転送する

みんな大好き embulk を使ってアナリティクス上のデータをインプットソースとしてBigQueryへアウトプットします.


サービスアカウントを発行する

まず, 認証のためのアカウントを発行します。

自身のプロジェクトを選択してサービスアカウント を発行します.

スクリーンショット 2018-04-14 18.37.50.png


APIを有効にする

該当するAPIを有効にします.

スクリーンショット 2018-04-14 19.30.22.png


GAにサービスアカウントを登録する

Google Analyticsの管理画面 対象のビューのユーザーに, さきほど作成したサービスアカウントを 「表示と分析の」 権限で追加してください。

スクリーンショット 2018-04-14 18.45.04.png


Gemのインストール

Google Analyticsからデータをインプットし, BigQueryへデータをアウトプットするために以下のGemを使います.

embulk gem install embulk-input-google_analytics

embulk gem install embulk-output-bigquery


設定ファイルの作成


ga-to-bigquery.yml

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

スクリーンショット 2018-04-14 19.21.02.png

以上で, BigQuery上にアナリティクスのデータを転送することができました.

例えば, BigQuery上にサービスDBのユーザーテーブルなど, 各種マスタ・トランザクションテーブルがあると結合してもう少し深ぼった分析が可能になりそうですね.


補足

今回はBigQueryに直接データを転送していますが一度GCSにデータをエクスポートし, GCSを経由させてBigQueryに転送した方がパフォーマンスも良く安定します.


参考リンク