【概要】
こんにちは
GoogleOptimizeのとBigqueryのデータ連携がどのような持ち方か2点確認を行っていきます。
GoogleOptimizeといえば簡単にWEBサイトのABテストが可能で
ページビュー数、セッション数、ゴール到達数等集計まで行ってくれる便利なツールです。
Optimizeで集計してくれますがBigqueryでも集計は可能です。
しかし集計時に注意点がありますので備忘録的な意味で改めて記していきます。
※この記事はGoogleAnlyticsのユニバーサルアナリティクス(以下UA)に準拠した記事となっております。
GA4は確認取れ次第別途記事化致します。
【エクスペリエンスが複数有効になっている】】
A/Bテストが複数走っている場合、以下のようなSQLでUNNEST化すると
一つのexperimentID(以下EI)と一つのexperimentVariant(以下EV)しかカラムに表示されません。
hits.experiment.experimentId as experimentId,
hits.experiment.experimentVariant as experimentVariant,
しかも同じEIとEVが表示されるのではなくバラバラです。
例
hitnumber experimentId experimentVariant
1 test1 0
2 test2 1
3 test2 1
このような形になってしまうので回避方法として
(hits.experiment[SAFE_OFFSET(0)]).experimentId as experimentId0,
(hits.experiment[SAFE_OFFSET(0)]).experimentVariant as experimentVariant0,
(hits.experiment[SAFE_OFFSET(1)]).experimentId AS experimentId1,
(hits.experiment[SAFE_OFFSET(1)]).experimentVariant AS experimentVariant1,
上記をUNNEST時いれることで複数のEIとEVに対応したカラムを作成することが可能になります。
【テスト期間中のEAとEVの仕様について】
ユーザーが一度でもテストを行っているページに訪れるとEA/EVが割り振られます。
これはテスト期間中デバイス等の変更が無い限り永続です。
EI/EVが付与された後、1日経過してABテストを行っていないページに訪れてもHITSデータに記録されるため、
Bigquery側で集計する際は必ずテストページを訪れた上でゴールに到達したセッション数の計算を行う必要があります。
EI/EVはテスト期間中永続ですがvisitIDは通常通りなのでセッション計算する場合は
複数のEI/EVカラムをorで区切る必要があります。
COUNT(DISTINCT(IF((experimentId0 = “テストID” AND experimentVariant0 = 0) OR (experimentId1 = “テストID” AND experimentVariant1 = 0)))) AS NONTESTSS,
COUNT(DISTINCT(IF((experimentId0 = “テストID” AND experimentVariant0 = 1) OR (experimentId1 = “テストID” AND experimentVariant1 = 1)))) AS TESTSS,
これに対象のページの条件が加わると手間がかかる上に可読性も悪く間違いの元になりそうなので
予めEI/EVカラムをCONCATしておくと計算クエリの可読性が上がります。
CONCAT(IFNULL(CONCAT(IFNULL(experimentId0, “”),”_”,IFNULL(experimentVariant0, “”),”,”,IFNULL(experimentId1, “”),”_”,IFNULL(experimentVariant1, “”))))
⇒ experimentId0_experimentVariant0,experimentId1_experimentVariant1,

コメントを残す