Adobe Analytics

Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQueryに保存してLookerで分析 (その1)

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はAdobe AnalyticsとGoogle AnalyticsのJSライブラリが送信するWebビーコンデータを加工無しで「生のまま」BigQueryに保存する、トリッキーなネタです。

Webビーコンを横取りする

例えば弊社公式サイトではAdobe Analyticsに対してこういうWebビーコンが送信されてます。

exture.d1.sc.omtrdc.net/b/ss/exture/1/JS-1.7.0-D7QN/s?AQB=1&ndh=1&pf=1&ce=UTF-8&cdp=2&pageName=ext:index.html&g=https://www.ex-ture.com(以下略

そしてGoogle AnalyticsにはこういうWebビーコンが送信されてます。

www.google-analytics.com/r/collect?v=1&_v=j72&t=pageview&_s=1&dl=https://www.ex-ture.com/&ul=ja-jp&de=UTF-8&dt=エクスチュア株式会社...(以下略

いずれもこれらのリクエストをWebビーコンやらサーバーコール、ピクセルなどと呼びますが、このパラメータ「文字列」をそのまま記録しておきたいと思った次第。
これらの生データをBigQueryに記録して、ほぼ生のログを見れるようにする、というのが目的です。

Adobe AnalyticsのWebビーコンURLをconsoleに出力する

AAにデータが送信されるたびに、AppMeasurement 1.7ではs.kbという変数にリクエストURLが入ります。
※AppMeasurement 2.4 ではs.rbでした。デベロッパーコンソールでwindow.sの中身を見れば分かります。
このs.kbをconsole.logで表示するとこうなります。

console.log(s.kb)

Google AnalyticsのWebビーコンURLをconsoleに出力する

sendHitTaskの中でhitPayloadという値を呼び出すとリクエストURLパラメータを取り出すことが出来ます。
GTMでやるならこうです。

まずは下記のJavascriptを使って、hitPayload という名前のカスタムJavascript変数を作成します。

名前: hitPayload
中身:

function() {
  return function(model) {
    console.log(model.get('hitPayload'));
  }
}

そしてGAユニバーサルアナリティクスのタグに、sendHitTaskというフィールドを追加して、そこで先程作った{{hitPayload}}変数をセットします。
sendHitTaskというフィールドはこの記事を書いてる時点でGTMの選択肢には出て来ませんが、気にせず打ち込んでください。

[Googleアナリティクス設定変数]を使っている場合は、そこでフィールドを追加設定出来ます。
個別のタグに設定したい場合は、各タグの[このタグでオーバーライド設定を有効にする]項目にチェックをいれて、設定を追加出来ます。

詳細設定 > 設定するフィールド
フィールドの名前: sendHitTask
値: {{hitPayload}}

sendHitTaskフィールドを追加

プレビューモードでコンソール出力を確認すると、GAのWebビーコンURLが表示されます。

hitPayloadが表示される

さて、コンソールにWebビーコンURLを表示出来たということは、あとはこれを横取りして、BigQueryに記録するための仕組みを作れば良い訳です。
以前、Adobe Analyticsに入り切らないデータをBigQueryに投入する というブログ記事を書いた時にやったのと同じ仕組みで、JSでビーコン飛ばす -> GAE -> PubSub -> Dataflow -> BigQuery という流れにします。
そして、ログ取るだけではつまらないので、データプラットフォームのLookerにつないでグラフ化するところまでやります。

GCPで生ビーコンログ保存環境を作る

 
以下、GCPで環境を作っていきます。
 

1. Pub/Subのトピックを作成

計測データがWebページから連続的に送られてくるので、Pub/Subでバッファさせます。
今回は beacon という名前でトピックを作成しました。

2. AppEngineでビーコンサーバーを作成

ビーコンを受け取るためのサーバーをGAEで作ります。
毎度おなじみのGAE Standard環境のNode.jsでやります。

ソースコードはここに置いておきます。

これまたテキトーに解説すると、横取りしたAAとGAのWebビーコンデータを受け取って、タイムスタンプ+日付とともにPub/SubにJSONで渡すだけです。

3. BigQueryにテーブルを作成

データを格納するテーブルを作成します。
TIMESTAMP型のhit_timeカラムを使って日付分割パーティションテーブルとして作成しておきます。

日付分割パーティションテーブルを作成

4. Dataflowでパイプラインを作成

Pub/SubでバッファしたデータをBigQueryに投入するためのパイプラインをDataflowで作成します。

Dataflowを使うにあたって、tmpデータ書き込み用のGCSが必要です。
GCSでバケットを作るか、または既存のバケットにフォルダを作成して、それをtmpデータ用にします。

そして今回はDataflowのデフォルトテンプレートである[Pub/Sub to BigQuery]テンプレートを使います。
Dataflowの作成からテンプレートを選んで、上記で作成してPub/Subのトピックと、BigQueryテーブル、GCSバケットを入力するだけでパイプラインを作成出来ます。

Dataflowテンプレートからジョブを作成

5. ビーコン送信用のJSを作成

そして最後に横取りしたWebビーコンデータを送信するためのJSを作成します。

Adobe Analytics用

AA用のソースコードはこちら
このJSファイルをタグマネージャーやAppMeasurement.jsファイル内に設置するだけでOKです。

Google Analytics用

GA用のソースコードはこちら
このJSファイルを先程説明したGTMのhitPayload変数の中身と置き換えます。

さて、タグマネージャーを本番発行したらBigQueryの中を覗いてみましょう。

BigQueryに生WebビーコンURLが記録されます

続々とデータがストリーミングインサートされて来ます。

さて、今回はここまで。
次回は、生ログを見やすく加工した上で、Lookerでグラフ化します。

続きはこちら

弊社では各MarTech(マーテック)製品の導入支援や、Google Cloud Platformを使ったデータ分析基盤構築を主に行っております。
お問い合わせはこちらからどうぞ

ブログへの記事リクエストはこちらまで

関連記事

  1. Adobe Analytics

    Adobe Analytics: Datafeedにデバイスデータがないけど慌てない

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  2. Adobe Experience Cloud

    Adobe Summit 2019 レポート

    こんにちは、エクスチュアの鈴木です。3/25から3/28までの4日…

  3. Google Cloud Platform

    Looker: LookerbotでSlackにグラフ画像をスケジュール投稿する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  4. Adobe Analytics

    Adobe AnalyticsとGoogle Analyticsの違い② サンプリングの有無

    こんにちは。CEOの原田です。AAとGAの違いの2段目にいきます。…

  5. Firebase Analytics

    Firebase AnalyticsのデータをフラットなCSVに変換するETL処理

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

最近の記事

  1. KARTE – 「コンテキストイベント」を活用し…
  2. KARTE:最低限!KARTEの運用管理のためにやっておくこ…
  3. YOTTAA:新機能「Anomaly AI」のご紹介
  4. Tableau 2021.1 新機能紹介
  5. YOTTAA:ECサイトで見るべき8つのサイトパフォーマンス…
  1. Google BigQuery

    Tableau : BigQueryでLOD計算が使えない場合の対処法
  2. Ad Hoc Analysis

    Adobe Analytics: Ad Hoc Analysisでセグメントの条…
  3. KARTE

    KARTE:カスタムイベントでページの要素を取得して接客を出す
  4. ObservePoint

    ObservePoint:強力でアツい機能を持つサイト監査ツールの紹介
  5. GA 360 Suite

    GoogleDataStudio:複数のデータソースにフィルターを適用する
PAGE TOP