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. Adobe Analytics

    Adobe Analytics: カスタムリンク計測を1行で書く

    こんにちは、エクスチュアCTOの権です。Adobe Analy…

  2. Adobe Analytics

    Looker: エンジニアがBIで分析ダッシュボードを作る

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

  3. Cloud Dataproc

    BigQueryテーブルをAVRO形式でエクスポートしてHiveで扱う

    こんにちは、エクスチュアCTOの権です。今日も普段あまり使わな…

  4. Firebase Analytics

    Firebase Analyticsの新しいBigQueryスキーマを試す

    こんにちは、エクチュアの権泳東(コン・ヨンドン)です。「お名前なん…

  5. Google BigQuery

    Tableau×BigQueryをコスパ良く使う方法

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

  6. Adobe Analytics

    Adobe Analytics:自動で分析してくれる貢献度分析(異常値検出)機能

    こんにちは、CEOの原田です。今回は随分前から公開されてるのに…

最近の記事

  1. Adobe Analytics + Google BigQu…
  2. Adobe AnaltyicsとGoogle Analyti…
  3. TableauでTreasure Data上のデータへ接続す…
  4. Treasure DataからBigQueryにデータを移動…
  5. Adobe AnaltyicsとGoogle Analyti…
  1. Tableau

    Tableau:分かりやすいLOD-概要編
  2. Adobe Target

    Adobe Target: スマホアプリ上でABテストをする
  3. Adobe Analytics

    Adobe Analytics: Legacy s_code.jsからAppMe…
  4. Adobe Analytics

    Adobe Analytics: Datafeedのログからフォールアウトレポー…
  5. Adobe Analytics

    Adobe Analytics: データフィードをGoogle Compute …
PAGE TOP