こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。
みなさんはもうGA4使ってますか?
GA4にはユーザープロパティというユーザースコープのディメンションと、イベントパラメータというイベントスコープ(ヒットスコープ)のディメンションが存在してます。
で、セッションスコープのディメンションが今のところ存在してません。
そこで、イベントパラメータをセッションスコープで集計する方法はないかな?と考えて2通り見つけたので紹介します。
1. 分析ハブを使う
分析ハブの「セッションセグメント」を使えば特定のイベントパラメータが発生したセッションの分析が可能です。
セグメントの作り方はこうです。
1. 分析ハブを開いて、セグメントのとなりの「+」をクリックします。
2. そしてセッションセグメントを選びます。
3. イベントパラメータを送信しているイベントを選び、パラメータと条件を指定します。
例えば、load_geoweatherイベントで送信しているイベントパラメータ「weather」の値が「Clear」に「完全一致する」という条件を選んでみました。
これを繰り返して、Clear(天気:晴れ)、Clouds(天気:くもり)、Rain(天気:雨) というセッションセグメントを3個作りました。
4. そして、作成したセッションセグメントを並べていけば、各イベントパラメータ値が発生したセッション毎の集計が出来ました。
ただし、この方法だとイベントパラメータの値の数だけセッションセグメントを作る必要があり、そこが難です。
また、上記3の手順でイベントパラメータからディメンションを作成してますが、分析ハブはディメンションを作成する前のデータは反映してくれません。。
というわけでディメンションは先に作っておきましょう。
GA4は急激に進化を続けてる過程なので、もしかしたらいつか「セッションパラメータ」なんて機能が爆誕してくれたら嬉しいですね。。
2. BigQueryを使う
さて、私が好きなのはこっちです。
BigQuery最強。
BigQueryを使って、分析ハブで作ったセッションセグメントによる修正を再現してみます。
-- まずは集計期間のデータを横持ちのフラットなレコードにする。 WITH t1 AS ( SELECT event_timestamp, CONCAT(user_pseudo_id, CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') as STRING)) AS sid, (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'weather') AS weather, CASE WHEN event_name = 'page_view' THEN 1 ELSE 0 END AS page_view, CASE WHEN event_name = 'session_start' THEN 1 ELSE 0 END AS session_start, CASE WHEN event_name = 'scroll' THEN 1 ELSE 0 END AS scroll FROM `analytics_12345678.events_*` WHERE _TABLE_SUFFIX BETWEEN '20201029' AND '20201029' ) -- イベントパラメータweatherを持つセッションIDを抽出 ,t2 AS ( SELECT distinct sid, LAST_VALUE(weather IGNORE NULLS) OVER(PARTITION BY sid ORDER BY event_timestamp ASC) AS weather FROM t1 ) -- セッションID別にイベントを集計 page_view ,t3 AS (SELECT sid, SUM(page_view) AS page_view FROM t1 GROUP BY 1 ) -- セッションID別にイベントを集計 session_start ,t4 AS (SELECT sid, SUM(session_start) AS session_start FROM t1 GROUP BY 1 ) -- セッションID別にイベントを集計 scroll ,t5 AS (SELECT sid, SUM(scroll) AS scroll FROM t1 GROUP BY 1 ) -- 集計 SELECT t2.weather, SUM(t3.page_view) AS page_view, SUM(t4.session_start) AS session_start, SUM(t5.scroll) AS scroll FROM t2 LEFT JOIN t3 on t2.sid = t3.sid LEFT JOIN t4 on t2.sid = t4.sid LEFT JOIN t5 on t2.sid = t5.sid WHERE t2.weather IS NOT NULL GROUP BY 1 ORDER BY 2 DESC
結果はこうなりました。
縦横の向きが違うのと、イベントを端折って3個しか選んでませんがそこはスルーして下さい。
分析ハブと同じ数字が出てますね。
SQLは裏切りません。
分析ハブではイベントパラメーターからディメンションを作る前のデータはセグメントに反映出来ませんが、BigQueryならエクスポート設定をした以降の期間のデータに対して集計が可能です。
まとめ
今回はGA4のイベントパラメータをセッションスコープで集計する方法について説明しました。
分析ハブでセッションセグメントを作るか、BigQueryで同等のロジックで集計すればセッションスコープの分析が可能です。
GA4はまだまだ進化の途中です。
シン・ゴジラのように第2形態、第3形態とものすごい勢いで新たな機能が出てくる気がしてなりません。
このブログが読まれる頃にはもうセッションパラメータが実装されてたりして・・・w
弊社ではGoogleAnalytics/AdobeAnalyticsなどの各Martechツールの導入実装コンサルティングサービスや、GCP/AWSなどのパブリッククラウドを使ったデータ分析基盤構築コンサルティングサービスを提供しております。
お問い合わせはこちらからどうぞ。