TableauからGoogle Analyticsにいい感じに繋ぐには
Google Analytics(以降GAとする)の常に最新のデータをTableauでみる(つまりライブ接続する)方法について考えてみました。GAは、Tableauからだと必ず抽出になってしまい、デフォルトの接続方法だと常に最新のデータをみるライブ接続はできません。そこで、ライブ接続と同等の状況をつくり出すワークアラウンドを考えてみました。
使うツール群はこちらです。

TableauでGAのデータに接続し、今回は更に、売上データなどの別データソースのトランザクションデータのチャートに重ねて表示してみます。こちらがゴールイメージです。

Google AnalyticsからGoogle Spreadsheetにデータを取り込む
GAからGoogle Spreadsheetに必要な分だけデータを取り込んで、それをTableauで読みにいくことにします。Google Spreadsheetには、アドオンが用意されているので、取り込むこと/その処理を毎日実行することは難しくありません。
簡単のためデイリーのPVのみを取ってきます。(最終的にTableauで、月ごとにみたい場合はこの時点でDimensionsを月にしておくのが簡単です。尚、データブレンディングを使わず、日付をキーにテーブルを結合して、値を使う際はLOD計算をする方法でいく場合はその限りではありませんが。)
アドオンからCreate new reportを押します。

GAのアカウント情報を選択肢、MetricsやDimensionsを入れます。Dimensionsは増やしていくと、その値の種類数のかけ算でレコード数が増えることに注意が必要です。

Limitは消しておきます。ちなみに私は、Metricsのセルの中身はこんな感じにしています。
ga:users,ga:sessions,ga:bounceRate,ga:goalCompletionsAll,ga:goalConversionRateAll,ga:pageValue,ga:entrances,ga:pageviews,ga:avgTimeOnPage,ga:exits
Configurationができたら試しにRun reportsをして、データが取れることを確認します。

結果のシートはこんな感じになりました。ここで上から十数行は設定情報が入ってきていて、Tableau的にはいらない情報が入ってきてしまっているんですね。。これを後で消すことにします。

結果がOKであれば先程のアドオンのSchedule reportsから、自動実行の設定をします。こんな感じの間隔で設定してみます。

Google Spreadsheetをマクロで加工する
先程確認した通り、Tableau的に余計な行が入っているのでこれをスクリプトで消します。ツールからスクリプトエディタを開きます。

シートをコピーして、上から14行分削除するコードはこんな感じになると思います。
function cp_ga(){ // 現在のスプレッドシートの取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // GAのアドオンを実行して出来上がったシートの取得 var ss_sheet_ga = ss.getSheetByName("Daily-Pageviews"); // 前回作成したシートがあったら削除 var ss_sheet_cp = ss.getSheetByName("Daily-Pageviews のコピー"); if (ss_sheet_cp) { ss.deleteSheet(ss_sheet_cp); } // GAのアドオンを実行して出来上がったシートをコピー、その後〜14行目まで削除 var ss_sheet_cp = ss_sheet_ga.copyTo(ss); ss_sheet_cp.deleteRows(1, 14); }
プロジェクトと関数にも適当に名前をつけて、試しに実行してみると、Authorization requiredと言われるので、”許可を確認”を押してすすみ

確認されていませんと言われたら、詳細をクリックして許可していきます。

三角のボタンで、実行します。

こんな感じのシートが出来上がれば、想定どおりです。

では、時計みたいなボタンを押して、自動実行する設定をします。

トリガーを追加して、

先程のSpreadsheetのアドオン実行のややあとの時間帯に設定します。

準備したデータにTableauから接続する
いよいよTableauの設定です。
まずは、売上データ(GAじゃない方)に接続します。後ほどデータブレンディングという方法で、売上とGAのデータを重ねてみたい関係で、日付に当たるカラムのカラム名を”Date”として、GA側と同じにしておきます。GA側を変更して合わせてもOKです。(売上データは、Tableauに付属のサンプルデータを使いました)

次にGAのデータを読み込んでおきます。


売上データはシンプルに例えばこんな感じのチャートにしておき、、これを開いた状態で

左上のところでGA側のデータソースをクリックして切り替えて、GAのデータソースの[Date]のところに赤い鎖がついていることを確認します。鎖が赤くない場合は、鎖をクリックすると赤くなりリンクされます。

このまま[Pageviews]をドラッグして折れ線グラフにします。これがもうデータブレンディングです。通常、テーブルが2つあって1つのチャートにする場合”結合 (Join)”しないといけませんが、同じ名前のカラムがある場合それをせずにデータブレンディングでもう一方のテーブルのデータを持ってくることができます。なお、データブレンディングではGA側のデータは”属性”になっている(つまりATTR([Pageviews]))ので、更に合計にする(集計を二重にかける)ことができません。
ここでチャートは二重軸にし、更にDateをフィルターに入れて例えば直近の30日間のみ表示されるようにしておきます。


これで完成です。
お疲れさまでした。次の日、データが更新されていれば成功です!!

Hrioki Saito



