GA4 데이터를 BigQuery에서 분석할 때, 반복 필드(repeated fields)와 일반 필드를 함께 조회하는 작업은 흔합니다. 특히 event_params
에서 특정 키의 값을 추출하면서 다른 필드와 함께 분석하려면 UNNEST를 적절히 사용해야 합니다. 이번 글에서는 dimension3
과 traffic_source.manual_source
를 함께 조회하는 3가지 다른 방식의 쿼리를 소개합니다.
1. FROM 절에서 UNNEST 사용
예제 쿼리
SELECT
event_date,
event_name,
dim.value AS dimension3_value,
traffic_source.manual_source
FROM
`your_project_id.your_dataset_id.events_*`,
UNNEST(event_params) AS dim
WHERE
dim.key = 'dimension3'
AND _TABLE_SUFFIX BETWEEN '20230101' AND '20230131';
설명
event_params
를 UNNEST하여 반복 필드를 평면화합니다.- UNNEST된 결과를
dim
이라는 별칭으로 처리하여dim.key
와dim.value
를 조회합니다. dimension3
키에 해당하는 값만 필터링합니다.
이 방법은 간단하고 직관적이어서 가장 널리 사용됩니다.
2. CROSS JOIN UNNEST 사용
예제 쿼리
SELECT
e.event_date,
e.event_name,
dim.value AS dimension3_value,
e.traffic_source.manual_source
FROM
`your_project_id.your_dataset_id.events_*` e
CROSS JOIN UNNEST(e.event_params) AS dim
WHERE
dim.key = 'dimension3'
AND _TABLE_SUFFIX BETWEEN '20230101' AND '20230131';
설명
CROSS JOIN UNNEST
를 명시적으로 사용하여event_params
를 평면화합니다.e
라는 별칭을 사용해 기본 테이블의 다른 필드(traffic_source.manual_source
)와 함께 조회합니다.- 관계를 명확히 표현하는 데 유용하며, 복잡한 데이터 구조에서도 가독성을 높입니다.
3. 서브쿼리에서 UNNEST 사용
예제 쿼리
WITH unnest_params AS (
SELECT
event_date,
event_name,
traffic_source.manual_source,
dim.value AS dimension3_value
FROM
`your_project_id.your_dataset_id.events_*`,
UNNEST(event_params) AS dim
WHERE
dim.key = 'dimension3'
AND _TABLE_SUFFIX BETWEEN '20230101' AND '20230131'
)
SELECT
event_date,
event_name,
dimension3_value,
manual_source
FROM
unnest_params;
설명
WITH
절(CTE)을 사용해 UNNEST 작업을 별도의 서브쿼리로 분리합니다.- 반복 필드 처리 로직을 분리하여 메인 쿼리를 간결하게 유지합니다.
- 복잡한 필터링이나 추가 데이터 처리를 요구할 때 유용합니다.
각 방식 비교
방식 | 특징 | 장점 | 적합한 경우 |
---|---|---|---|
FROM 절 UNNEST | 간단하고 직관적 | 가장 간단한 쿼리 구조 | 가벼운 작업 시 |
CROSS JOIN UNNEST | 명시적 관계 표현 | 가독성 높음 | 복잡한 데이터 구조에서 사용 |
서브쿼리 UNNEST | 로직 분리 가능 | 유지보수 및 재사용성 높음 | 복잡한 필터링 로직 필요 시 |
결론
GA4 데이터를 분석할 때 UNNEST는 반복 필드 데이터를 평면화하여 분석할 수 있는 강력한 도구입니다.
- 간단한 쿼리에는 FROM 절에서 UNNEST를 사용하세요.
- 복잡한 데이터 구조에서는 CROSS JOIN UNNEST가 더 명확합니다.
- 복잡한 로직을 다룰 때는 서브쿼리로 분리하여 관리하세요.
각 방식의 특성을 이해하고 목적에 맞는 방법을 선택해 효율적인 데이터 분석을 수행해 보세요!
답글 남기기