LoginSignup
1
1

More than 3 years have passed since last update.

EmbulkでGoogle AnalyticsのレポートをTreasure Dataへ送る

Last updated at Posted at 2018-06-01

概要

Google Analyticsで計測しているページビューを自動で毎日Treasure Dataへ送信したいので調べたことをメモしておく。

ファイル構成

ファイル一覧
├ diffs
│  │ # 最後に登録したレコード情報を保持する(自動作成されます)
│  └ daily_ga_pageview.yml
│
├ credencials
│  │ # GoogleAPI認証情報 (Google Service Account)
│  └ google-service-account.json
│
│ # 環境変数の定義スクリプト
├ secrets.sh
│
│ # レポート取得 & TDへの送信処理
└ daily_google_analytics_pageviews_to_td.yml.liquid

環境変数

下記シェルスクリプトを作って環境変数を自動定義する。

./secrets.sh
#!/bin/bash

# 環境設定(production, testing, development, local)
export EMBULK_ENV='local'

# 出力DBのプレフィックス (local: replace with environment)
export DB_PREFIX='local_'

# GoogleAPI認証情報
export GOOGLE_API_JSON=`cat ./credencials/google-service-account.json`

# TreasureData API Key
# ※ https://console.treasuredata.com/app/users/current
export EMBULK_TREASURE_DATA_API_KEY='1000/******************************'

クレデンシャル情報

Google Analyticsへアクセスするため、GCPでサービスアカウントを発行して権限を付与する。
※ 設定方法は省略します

./credencials/google-service-account.json
{
  "type": "service_account",
  "project_id": "hoge-00",
  "private_key_id": "*********************************",
  "private_key": "-----BEGIN PRIVATE KEY-----**************-----END PRIVATE KEY-----\n",
  "client_email": "fuga@hoge-00.iam.gserviceaccount.com",
  "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": "https://www.googleapis.com/robot/v1/metadata/x509/fuga%hoge-00.iam.gserviceaccount.com"
}

処理

下記2種類のコマンドを作成します。

  • 通常実行コマンド(差分追加)
  • 期間を指定して強制的に登録するコマンド
./daily_google_analytics_pageviews_to_td.yml.liquid
#
# ページビューをGoogleAnalyticsから取得し、TreasureDataへ送信する
#
# ex) 通常コマンド (昨日のレポートを登録する - 差分追加)
# $ source ./secrets.sh; embulk run ./daily_google_analytics_pageviews_to_td.yml.liquid -c diffs/daily_ga_pageview.yml
#
# [オプション]
# ・ 開始日: START_DATE=YYYY-MM-DD
# ・ 終了日: END_DATE=YYYY-MM-DD
#
# ex) 指定期間のデータを強制的に登録する
# $ source ./secrets.sh; START_DATE=2018-05-20 END_DATE=2018-05-30 embulk run ./daily_google_analytics_pageviews_to_td.yml.liquid
# ※ 注意: -c オプションは付けない
#
{% if env.EMBULK_ENV == 'production' %}
    {% assign view_id = '100000000' %}
{% else %}
    {% assign view_id = '100000001' %}
{% endif %}
in:
    type: google_analytics'
    auth_method: 'service_account'
    json_key_content: {{ env.GOOGLE_API_JSON }}
    view_id: {{ view_id }}
    time_series: 'ga:date'
    start_date: {{ env.START_DATE | default: 'yesterday' }}
    end_date: {{ env.END_DATE | default: 'yesterday' }}
    incremental: true
    metrics:
      - "ga:pageviews"
out:
    type: td
    apikey: {{ env.EMBULK_TREASURE_DATA_API_KEY }}
    endpoint: api.treasuredata.com
    database: '{{ env.DB_PREFIX }}hoge'
    table: 'daily_google_analytics_pageviews'
    mode: append
    default_timezone: 'Asia/Tokyo'
    default_timestamp_format: '%Y-%m-%d'

実行

下記コマンドで実行してみる。

ターミナル
$ source ./secrets.sh; embulk run ./daily_google_analytics_pageviews_to_td.yml.liquid -c diffs/daily_ga_pageview.yml

※ 昨日(2018-05-20)のページビューが登録される。

再実行 (差分追加なので登録されない)

ターミナル
$ source ./secrets.sh; embulk run ./daily_google_analytics_pageviews_to_td.yml.liquid -c diffs/daily_ga_pageview.yml

※ ./diffs/daily_ga_pageview.yml に最後に登録されたデータの情報があるので、昨日(2018-05-20)のデータはスキップされて登録されません。

期間指定をして、強制的に登録してみる。

ターミナル
$ source ./secrets.sh; START_DATE=2018-05-01 END_DATE=2018-05-19 embulk run ./daily_google_analytics_pageviews_to_td.yml.liquid

※ 2018-05-01〜2018-05-19が登録される。
※ -c オプションは付けない (付けると登録されないので注意!!)

参考サイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1