Adobe Analytics

Adobe Analytics: BigQueryでパーティシペーション指標を集計するSQL

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

今回はBigQueryでAdobeAnalyticsのパーティシペーション指標を集計するSQLについてです。

Adobe Analyticsにおけるパーティシペーション(貢献度)指標とは、コンバージョンに至るまでに通過したページや、途中で発生したeVar値の履歴に対して、貢献度を割り当てるための指標です。

これで関節効果・アシスト効果が見えてくる訳です。

コンバージョンをアシストした貢献数(パーティシペーション)

では、AdobeAnalyticsのDatafeedをBigQueryに入れて分析する際に、パーティシペーションはどうやって集計すれば良いのか?

例えば各ページ別にpurchaseイベント(Datafeed上のEventID:1)のパーティシペーションを出すなら、こう書きます。

WITH t1 AS (
  SELECT
    CONCAT(post_visid_high, post_visid_low, CAST(visit_num AS string)) AS session,
    hit_time_gmt,
    post_pagename AS pagename,
    SIGN(SUM(CASE WHEN CONCAT(',', post_event_list, ',') LIKE '%,1,%' THEN 1 ELSE 0 END) 
         OVER(PARTITION BY CONCAT(post_visid_high, post_visid_low, CAST(visit_num AS string))
              ORDER BY hit_time_gmt DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS cvflag
  FROM `exture.hit_data`
  WHERE
    DATE(hit_time_gmt, 'Asia/Tokyo') >= '2019-09-01'
    AND DATE(hit_time_gmt, 'Asia/Tokyo') < '2019-10-01'
    AND post_pagename IS NOT NULL
    AND exclude_hit = 0
    AND duplicate_purchase = 0
),
    
t2 AS (
  SELECT
    session,
    hit_time_gmt,
    pagename,
    ROW_NUMBER() OVER(PARTITION BY session, pagename ORDER BY hit_time_gmt) AS rownum,
    cvflag
  FROM t1
  WHERE cvflag = 1 
)

SELECT
  pagename,
  SUM(cvflag) AS participations
FROM t2
WHERE
  rownum = 1
  AND pagename NOT LIKE '%thanks%'
  AND pagename NOT LIKE '%contact%'
GROUP BY 1
ORDER BY 2 DESC

結果はこうなりました。

BigQueryでパーティシペーションを算出

Adobe Workspacesの数値と比べます。完全に一致です。

Adobe Workspacesのパーティシペーション数と一致

解説

まず最初のCTE(WITH句) t1では、同一セッションにおいて各ページを通過したあとにコンバージョンが発生したかどうかをチェックしてます。
post_visid_high, post_visid_low, visit_num の3つを組み合わせてセッションIDを作ってます。
→ もし訪問者レベルのパーティシペーションを分析したい場合はpost_visid_highとpost_visid_lowだけ使えばOKです。

次のCTE t2では、セッション内で同じページを複数回通過した場合に重複を除去するために「セッション+ページ別」にROW_NUMBER関数で番号を振ってます。
この番号が1のページだけを使えば同じページをセッション内に何度通過しても「1」だけカウントします。

そして最後のクエリで、ページ別にパーティシペーション数を出すのですが、フォーム近辺のページは当然のように数値が大きくなるので除外します。

以上で、AdobeのUIを使わなくてもパーティシペーション分析がBigQueryで出来るようになりました。
BigQueryが大好きなMartech系データエンジニアはこれで益々仕事が楽しくなります。(当社比)

なお、注意点がありまして、BigQueryでeVar変数のパーティシペーション分析をする場合は、post列ではなくpre列で行うと良いです。
→ eVar配分設定が「元の値」になってる場合にpost列だと最初の値しか入らないので、パーティシペーション分析出来ない。

 

今回はBigQueryを使ってAdobeAnalyticsのパーティシペーション指標を再現するためのSQLについて紹介しました。
これを応用すれば、AdobeAnalyticsではなくてGoogleAnalytis360 / Firebase / GA App+WebプロパティのBQスキーマに対してもパーティシペーション分析が出来ますね。

弊社では、Google Cloud認定データエンジニア資格とAdobe認定エキスパート資格を保持した技術者達によるデータ分析基盤構築業務を承っております。
お問い合わせはこちらからどうぞ

関連記事

  1. Adobe Analytics

    Adobe Analytics:セグメントの落とし穴:意図しないデータが混ざる①

    Adobe Analyticsの便利な機能のセグメント。便利なのですが…

  2. Adobe Analytics

    Adobe Analytics:計算指標でevents変数を後付けでパーティシペーションにする

    こんにちは。CEOの原田です。なるべくこのブログでは新しめな内容を…

  3. GA 360 Suite

    BigQuery: Google Analytics 360のネストされたデータをフラット変換するS…

    こんにちは、エクスチュアCTOの権です。今回はGA360のBi…

  4. Adobe Analytics

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

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

  5. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  6. Firebase Analytics

    GoogleAnalytics Apps+Web プロパティをBigQueryと連携したついでにフラ…

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

最近の記事

  1. Adobe Analytics: BigQueryでパーティ…
  2. 続・SafariのITP2.x対策として別サーバー使ってクッ…
  3. Big QueryでWindow関数を用いて、累積和を計算す…
  4. Adobe Analytics: DatafeedをGoog…
  5. Adobe DTMからAdobe Launchに一発アップグ…
  1. Tableau

    Tableau:Viz in ツールヒントを出し分ける
  2. Adobe Analytics

    Azure DatabricksでAdobe AnalyticsのDatafee…
  3. Databricks

    Databricksを始める前に覚えておきたいScalaプログラミングの基本
  4. Mouseflow

    Mouseflow:計測対象からの除外
  5. Adobe Analytics

    Adobe Analytics:IF関数を使用した計算指標
PAGE TOP