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


はじめに

弊社ではユーザーの一部アクションログを 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

設定ファイルの作成

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

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

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

補足

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

参考リンク