BigQueryにエクスポートされるGA4のパラメータに「batch_page_id」が23年の11月頃に追加され、どのようなパラメータなのか情報が少なかったため調査した内容をメモとして残す。
batch_page_idとは
GA4の公式ヘルプに記載がまだ見当たらなかったが、BigQueryにエクスポートされたデータを見た上で判断すると、全てのイベントにbatch_page_idパラメータが付与され、いずれかのpage_viewイベントに紐付いていることが特定できた。そのため、同じセッション内でもpage_viewイベントが付く度にbatch_page_idも可変する。なお、同一ページでもpage_viewイベントごとにbatch_page_idもユニークなIDが振り分けられる。
batch_page_idの活用用途
page_viewイベントの件数と、重複なしのbatch_page_idの件数は一致するため、各page_viewイベントごとの分析を行いたいケースに活用することができる。例えば、複数のイベントが同じpage_viewイベントに紐づいている条件指定が必要な場合。もう少し細かく言うと、① ページA → ➁ ページB → ③ ページAと遷移する行動フローでは、各ページにIDを振り分けなければページAの①と③を分けて分析することは難しくなるが、batch_page_idを活用することで、特定のpage_viewイベントに対して分析することが容易になることが考えられる。要はbatch_page_idによって「ページ単位」のスコープが扱えるようになったといえる。
GA4において「エンゲージメント」という概念が取り入れられた。この「エンゲージメント」は一般的な用語としても使われ、GA4の指標の中にも「エンゲージメント」といった用語が付くものが多く、それぞれの「エンゲージメント」の付く指標の違いを理解しておく必要がある。また、この理解がないとコンテンツ単位のエ...
batch_page_idの検証クエリ
CREATE TEMP FUNCTION date_from() RETURNS STRING AS ('20240301');
CREATE TEMP FUNCTION date_to() RETURNS STRING AS ('20240630');
WITH
verify_batch_page_id AS (
SELECT
PARSE_DATE("%Y%m%d", event_date) AS ymd,
FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S", TIMESTAMP_MICROS(event_timestamp), "Asia/Tokyo") AS event_timestamp_jst,
event_timestamp,
CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING)) AS ssid,
event_name,
REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'), r"\?.*", "") AS page_location,
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'batch_page_id') AS batch_page_id
FROM
`<project>.<dataset>.events_*`
WHERE
_TABLE_SUFFIX BETWEEN date_from() AND date_to()
AND
REGEXP_CONTAINS(event_name, r'first_visit|user_engagement|session_start|page_view|scroll|click')
ORDER BY
ssid ASC,
event_timestamp ASC
)
SELECT
*
FROM
verify_batch_page_id