データサイエンス

TableauダッシュボードにGoogle Analyticsのデータものっけたい

TableauからGoogle Analyticsにいい感じに繋ぐには

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

使うツール群はこちらです。
f:id:gri-blog:20191120083930p:plain

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

Google AnalyticsからGoogle Spreadsheetにデータを取り込む

GAからGoogle Spreadsheetに必要な分だけデータを取り込んで、それをTableauで読みにいくことにします。Google Spreadsheetには、アドオンが用意されているので、取り込むこと/その処理を毎日実行することは難しくありません。

簡単のためデイリーのPVのみを取ってきます。(最終的にTableauで、月ごとにみたい場合はこの時点でDimensionsを月にしておくのが簡単です。尚、データブレンディングを使わず、日付をキーにテーブルを結合して、値を使う際はLOD計算をする方法でいく場合はその限りではありませんが。)

アドオンからCreate new reportを押します。
f:id:gri-blog:20191119164905p:plain

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

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をして、データが取れることを確認します。
f:id:gri-blog:20191119234223p:plain

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

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

Google Spreadsheetをマクロで加工する

先程確認した通り、Tableau的に余計な行が入っているのでこれをスクリプトで消します。ツールからスクリプトエディタを開きます。
f:id:gri-blog:20191119164936p:plain

シートをコピーして、上から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と言われるので、”許可を確認”を押してすすみ
f:id:gri-blog:20191119164944p:plain

確認されていませんと言われたら、詳細をクリックして許可していきます。
f:id:gri-blog:20191119164953p:plain

三角のボタンで、実行します。
f:id:gri-blog:20191119165002p:plain

こんな感じのシートが出来上がれば、想定どおりです。
f:id:gri-blog:20191119165011p:plain

では、時計みたいなボタンを押して、自動実行する設定をします。
f:id:gri-blog:20191119165024p:plain

トリガーを追加して、
f:id:gri-blog:20191119165030p:plain

先程のSpreadsheetのアドオン実行のややあとの時間帯に設定します。
f:id:gri-blog:20191119165035p:plain

準備したデータにTableauから接続する

いよいよTableauの設定です。

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

次にGAのデータを読み込んでおきます。
f:id:gri-blog:20191119165047p:plain
f:id:gri-blog:20191119165051p:plain

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

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

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

ここでチャートは二重軸にし、更にDateをフィルターに入れて例えば直近の30日間のみ表示されるようにしておきます。
f:id:gri-blog:20191119165108p:plain
f:id:gri-blog:20191119165112p:plain

これで完成です。
お疲れさまでした。次の日、データが更新されていれば成功です!!
f:id:gri-blog:20191119165147p:plain

Hrioki Saito