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. 最速で理解したい人のためのIT用語集

関連記事

  1. Google Cloud Platform

    Looker: サンバーストグラフを使って階層データを可視化する

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

  2. Adobe Analytics

    Adobe Analytics: データフィードをGoogle Compute EngineのLin…

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

  3. Adobe Analytics

    Adobe AEP SDKでReactNativeアプリを計測する (iOS編)

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

  4. Linux

    無料のWindows10仮想マシンをEdge/IE11検証用途で使う

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

  5. Cloud Dataflow

    データアナリスト/データエンジニア向けNext19まとめ

    こんにちは、エクスチュア渡部です。2019/4/9-4/11に行わ…

  6. KARTE

    CXツール「KARTE」ってどんなツール?主な機能や魅力をざっくり紹介!

    こんにちは!エクスチュアインターン生の上園…

最近の記事

  1. 回帰分析はかく語りき Part3 ロジスティック回帰
  2. GCSへのSnowflake Open Catalogによる…
  3. VPC Service Controlsで「NO_MATCH…
  4. モダンデータスタックなワークフローオーケストレーションツール…
  5. Streamlit in Snowflakeによるダッシュボ…
  1. IT用語集

    アーカイブ(Archive)って何?
  2. Mouseflow

    分析対象を絞り込むフィルター機能
  3. Tableau

    【TC19ブログ】Tableau Conference 2019 2日目レポート…
  4. Adobe Analytics

    検索エンジン-有料とは-Adobe Analyticsの指標説明
  5. Adobe Analytics

    Adobe Analytics-分析ワークスペースの使い方
PAGE TOP