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