GA4 Bigquery UNNEST 활용 방식 3가지

GA4 데이터를 BigQuery에서 분석할 때, 반복 필드(repeated fields)와 일반 필드를 함께 조회하는 작업은 흔합니다. 특히 event_params에서 특정 키의 값을 추출하면서 다른 필드와 함께 분석하려면 UNNEST를 적절히 사용해야 합니다. 이번 글에서는 dimension3traffic_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.keydim.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는 반복 필드 데이터를 평면화하여 분석할 수 있는 강력한 도구입니다.

  1. 간단한 쿼리에는 FROM 절에서 UNNEST를 사용하세요.
  2. 복잡한 데이터 구조에서는 CROSS JOIN UNNEST가 더 명확합니다.
  3. 복잡한 로직을 다룰 때는 서브쿼리로 분리하여 관리하세요.

각 방식의 특성을 이해하고 목적에 맞는 방법을 선택해 효율적인 데이터 분석을 수행해 보세요!


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다