[GA4] event_ 테이블을 _table_suffix을 사용하여 조회하는 법

JIEUN KANG·2022년 10월 3일
0
post-thumbnail

-- 번역 원문 :
https://www.ga4bigquery.com/tutorial-how-to-query-multiple-analytics-events-tables-with-table-suffix-ga4/

Intro.

BigQuery의 Google 애널리틱스 4 데이터는 매일 별도의 테이블에 저장됩니다(=샤딩 테이블). 하루(2021년 1월 3일)의 데이터만 필요한 경우 from쿼리의 절은 다음과 같습니다.

select
    *
from
    -- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
    `ga4bigquery.analytics_250794857.events_20210103`

그러나 대부분의 경우, 더 긴 기간을 추출해야 합니다. _table_suffix 를 입력하십시오. 일반적인 사용법에 대한 자세한 내용은 여기를 참조하세요. 그러나 GA4 데이터의 여러 테이블을 쿼리할 수 있으려면 여기에서 제공하는 예제 쿼리만 보면 됩니다.

(1)static dates, (2)rolling dates(ex.지난 90일간)과 같은 동적 날짜를 사용하거나 (3)정적 날짜와 동적 날짜를 결합할 수 있습니다. 쿼리에 일중 테이블을 포함할 수도 있습니다.

기간에 따른 조회 방법

(0) 데이터 세트의 모든 테이블 조회

가장 쉬운 방법입니다. 별표(*) 를 사용하여 데이터 세트 내에 events_로 시작하는 어느 테이블과 연결하세요. (참고 : 여기에는 events_intraday_20210103와 같은 intraday 테이블도 해당됩니다.)

select
    *
from
    -- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
    `ga4bigquery.analytics_250794857.events_*`

(1) 고정하여 기간 조회 (static date range)

이 방식은 고정된 시작 날짜와 종료 날짜를 사용해야 합니다. 본 예시에서는 2021년 1월 3일부터 2021년 2월 3일까지를 선택합니다.

select
    *
from
    -- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
    `ga4bigquery.analytics_250794857.events_*`
where
    _table_suffix between '20210103' and '20210203'

(2) 변동하는 값으로 기간 조회 (dynamic date rage)

본 예시에서는 지난 30일간 이라는, 변화하는(=rolling) 기간을 선택합니다. -> (오늘 - 어제를 포함한 30일)

select
    *
from
     -- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
    `ga4bigquery.analytics_250794857.events_*`
where
    _table_suffix between format_date('%Y%m%d',date_sub(current_date(), interval 30 day))
    and format_date('%Y%m%d',date_sub(current_date(), interval 1 day))
-- 함수 설명
format_date('%Y%m%d',date_sub(current_date(), interval 30 day))
  • current_date로 빅쿼리 상에서 현재 날짜를 불러오면 '2022-10-03' 이 출력됌
  • 해당 yyyy-mm-dd 형식을 yyyymmdd 로 재구성. 즉 파싱해주는 함수가 format_date
date_sub(current_date(), interval 1 day)
  • date_sub를 통해 현재 날짜에서 하루 전 날짜를 빼어서 계산

(3) static + dynamic 의 조합

두 형식의 조합은 제가 주로 선호하는 형태입니다. (본 예시에서는 오늘 - 하루를 빼는 작업)

데이터 세트에 새 데이터가 추가되면 쿼리에 자동으로 포함됩니다. 이 예에서는 2021년 1월 3일부터 어제까지의 데이터 범위를 선택합니다. BigQuery는 테이블이 실제로 존재하는지 파악하고 조건과 일치하고 존재하는 테이블에 대한 데이터만 반환합니다.

select
    *
from
    -- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
    `ga4bigquery.analytics_250794857.events_*`
where
    _table_suffix between '20210103' 
    and format_date('%Y%m%d',date_sub(current_date(), interval 1 day))

샤딩 테이블의 개념으로 데이터를 뿌려주는 ga4에서는 사실상 where절에 들어갈 가장 필수적인 문법이 될 것이다. (AWS 썼을땐 버킷 개념으로 파티션이 나눠졌던 기억이..)

샤딩으로 나눠지는 일자별 데이터들은 위와 같이 _table_suffix를 사용해서 조정해주면 되고, 이 일자는 특정 일자의 0시 0분 0초부터 ~ 23시 59분 59초 이다. 누적될 때 한국시간에 맞게 누적이 되는지 궁금해서 따로 event_timestamp의 값을 한국에 맞게 변환하여 max, min값을 조회해봤더니 위와 같이 나왔다. 안심하고 _table_suffix 쓰면 될듯.

개인적으로는 date_range 테이블을 임시 테이블로 만들어줘서 그 안에서 date에 대한 설정을 해주는게 기존 쿼리 에러를 덜어줄 수 있는 방법이라 생각이 든다.

profile
가장 보통의 존재

0개의 댓글