BigQuery で分析するとき、配列データ・ネスト型の扱いに悩んだことはありませんか?
Google Analytics 4 (GA4) のデータなどでみられるように、BigQuery では配列データが格納できます。
配列データの中身を取り出すには UNNEST 関数を使う必要があり、意図したデータを取得するのに少しコツがいります。
本記事では GA4 のデータを例に、配列データを行と列で展開する方法についてご紹介します。
目次
GA4 のデータ構造
GA4 のデータで UNNEST 関数を使用する必要があるのは、 event_params と user_properties のデータを取得するときです。
両者の key それぞれに対して、value が入ります。
イベントの対象となった URL などを取得する場合に、key と value を指定して取得します。
行に展開 ~FROM 句で UNNEST~
行に展開するときは、FROM 句で UNNEST 関数を使います。
ひとつのイベントに対して key の数だけ行に展開されるため、イベントは重複します。
データを集計する際は考慮する必要です。
SELECT
event_date,
event_name,
ep.*,
FROM
`{project_id}.analytics_xxxxxx.events_yyyyMMdd`,
UNNEST(event_params) AS ep
列に展開 ~SELECT 句で UNNEST~
横に展開するときは、SELECT 文で UNNEST 関数を使います。
ひとつのイベントに対して 指定した key の value がカラムに追加されるので、イベントは重複しません。
SELECT
event_date,
event_name,
(SELECT ep.value.string_value FROM UNNEST(event_params) AS ep WHERE ep.key='page_title') AS page_title,
(SELECT ep.value.string_value FROM UNNEST(event_params) AS ep WHERE ep.key='page_location') AS page_location
FROM
`{project_id}.analytics_xxxxxx.events_yyyyMMdd`
まとめ
GA4 を例に、配列データの展開方法についてご紹介しました。
分析時のお役にたてば幸いです。