GA4のデータをBigQueryにエクスポートして、DataformでゴニョゴニョしてからLookerStudioで可視化するということをやってた
そもそもGA4のデータはevent_paramsがREPEATEDなのでLookerStudioなどで可視化する場合はひと手間入れてあげるほうが使いやすい
ということでevent_paramsをフラットにして各イベントのキーをカラムとして扱うようにしてた
下記を参考にとりあえずはイベントの名前(event_params.key)は決め打ちで進めた
Googleアナリティクス4のBigQueryエクスポート仕様 – marketechlabo
イメージ
- before
- after
実際のSQLはこんな感じ(一部抜粋)
SELECT
event_date,
event_timestamp,
event_name,
(SELECT e.value.int_value FROM UNNEST(event_params) e WHERE e.key = 'ga_session_id' ) e_ga_session_id,
(SELECT e.value.int_value FROM UNNEST(event_params) e WHERE e.key = 'ga_session_number' ) e_ga_session_number,
(SELECT e.value.string_value FROM UNNEST(event_params) e WHERE e.key = 'session_engaged' ) e_session_engaged,
(SELECT e.value.string_value FROM UNNEST(event_params) e WHERE e.key = 'page_title' ) e_page_title
FROM `project.dataset.events_20230103`各種valueはevent_params.value.string_value, event_params.value.int_value… といったようにevent_params.keyによって値の型が異なるのでどのカラムにデータが格納されるかが変わる
しかし、いくつか確認してみたところsession_engagedの場合、event_nameの値によって格納されるカラム(int_value,string_value)が違うようだった
- SQL
SELECT
event_date,
event_timestamp,
event_name,
event.key,
event.value
FROM
`project.dataset.events_20230103`,
UNNEST(event_params) AS event
WHERE
AND event.key = 'session_engaged'なんと…
迷った末いったん実際のSQLはsession_engagementのみ次のような書き方でお茶を濁した
(SELECT COALESCE(e.value.string_value, SAFE_CAST(e.value.int_value AS STRING)) FROM UNNEST(event_params) e WHERE e.key = 'session_engaged' ) e_session_engagedとりあえず統一して扱えるようにはなった


