Adobe Analytics

Adobe Analyticsに入り切らないデータをBigQueryに投入する

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

Adobe Analyticsはリスト変数(s.list)が3個まで使えます。
しかし、サイト内検索の詳細検索条件などの選択項目を全て計測しようとするとあっという間にs.list変数は枯渇してしまい、悲しい気持ちになる事が度々あります。
ヘタな設計をするとs.eVar変数でさえ枯渇することもありますがw

そんな時は、GCPで補助用の計測環境を作ってしまいましょう。
Adobeに入り切らないデータは、BigQueryに直接投入してしまいます。

というわけで、

s.eVar変数にヒットIDを記録した上で、ヒットID+リスト変数データをBigQueryにストリーミングインサートして記録する

という事をやります。

今回やる事は以下のとおりです。お馴染みのアイコンでチャートを書くとこうなります。

では作ります。

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

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

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

ビーコンを受け取るためのサーバーをGAEで作ります。
今回はGAE Standard環境のNode.jsでやります。

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

テキトーに解説すると、ビーコンパラメータのi(ヒットID)とv(リスト変数データ)を受け取って、タイムスタンプ+日付とともにPub/SubにJSONで渡すだけの事しかやってません。

3. BigQueryにテーブルを作成

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

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

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

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

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

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

そして最後にデータを送信するためのJSを作成します。
s_code.jsに追記しても良いですし、別JSにしてもOKです。
もちろんAdobeのDynamic Tag ManagerやLauchなどのタグマネージャーでも可能です。

で、JSのソースコードもgithubに置いておきます。

これまたテキトーに解説すると、タイムスタンプと乱数でヒットIDを生成して、その値をeVarに入れます。
そして、そのeVarと同じヒットIDと、GAEに渡したいデータ(今回はカンマ区切りのリストデータ)をビーコンURLにパラメータとして付与してGAEに送る、というだけの事をしてます。

Webサイトに実装すると、このようなデータがAdobeAnalyticsとGAEに送信されるようになりました。

AAのビーコン

GAEのビーコン

AAのv21パラメータ(s.eVar21)と、GAEのiパラメータにヒットIDがセットされてます。

これがGAE > Pub/Sub > Dataflow を通って、BigQueryのテーブルに挿入されます。

リスト変数のデータが全部同じなのはスルーしてください。

6. Adobeのデータフィードと補助計測環境のデータを結合する

最後に、今回のアーキテクチャで計測したデータと、Adobe Analyticsのデータフィードのデータを結合してみましょう。
補助計測環境のリストデータに対してevent1が発生した回数を抽出します。
SQLもgithubに置いときます。

※AdobeデータフィードそのものをBigQueryにインポートする方法は過去にブログで書いたのでご参考ください。

で、クエリ結果です。

111、222、333にそれぞれevent1が2件ずつ紐付きました。

まとめ

Adobe Analyticsでリスト変数や他の変数が足りない場合、入り切らないデータはBigQueryに直接投入すればOKです。
そうすれば別途データフィード、またはAdobeからダウンロードしたCSVデータとクエリで結合するだけで分析が可能です。
つまり、擬似的にs.list変数やs.eVar変数などのディメンションを1,000個でも2,000個でも使えるという意味です。

弊社では、Adobe認定エキスパート資格とGoogleCloud認定データエンジニア資格を持ったエンジニアが、Google Cloud Platformを使ってAdobe Analyticsやその他のデータソースを統合する分析基盤の構築支援を行っております。
お問い合わせはこちらからどうぞ。

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

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google BigQuery

    Tableau : BigQueryでLOD計算が使えない場合の対処法

    こんにちは、エクスチュアの渡部です。Tableau×BigQu…

  2. Adobe Analytics

    Adobe Analytics: DWHレポートの日付列をBigQueryのDate型として扱う

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

  3. Databricks

    Databricks: Spark RDDで使う主なメソッド

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

  4. Google BigQuery

    Treasure DataからBigQueryにデータを移動させる方法

    こんにちは、エクスチュアの酒井です。今回は、TreasureDat…

  5. Google BigQuery

    GCP: 今月のGCP課金額をslackに自動的に書き込む

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

  6. Adobe Analytics

    はじめてのAdobe Analytics実装

    前回までの3回のブログで、イメージリクエストやアクセス情報の取得の原理…

最近の記事

  1. 【GA4/GTM】dataLayerを使ってカスタムイベント…
  2. 【GA4/GTM】dataLayerを活用しよう
  3. ジャーニーマップをデジタルマーケティングの視点で
  4. ChatGPT ProからClaude3 Proへ移行した話…
  5. その分析、やり方あってる?記述統計と推測統計の違い
  1. Google BigQuery

    Treasure DataからBigQueryにデータを移動させる方法
  2. Google BigQuery

    GCPのBQMLを使ってKaggleコンペに挑んでみた(その1)
  3. ObservePoint

    タグ監査ツールとは? 〜〜出来ることと導入のメリット〜〜
  4. IT用語集

    インベントリ(Inventory)って何?
  5. Adobe Analytics

    Adobe Analyticsのモバイルアプリが意外と便利
PAGE TOP