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)정적 날짜와 동적 날짜를 결합할 수 있습니다. 쿼리에 일중 테이블을 포함할 수도 있습니다.
가장 쉬운 방법입니다. 별표(*) 를 사용하여 데이터 세트 내에 events_로 시작하는 어느 테이블과 연결하세요. (참고 : 여기에는 events_intraday_20210103와 같은 intraday 테이블도 해당됩니다.)
select
*
from
-- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
`ga4bigquery.analytics_250794857.events_*`
이 방식은 고정된 시작 날짜와 종료 날짜를 사용해야 합니다. 본 예시에서는 2021년 1월 3일부터 2021년 2월 3일까지를 선택합니다.
select
*
from
-- 이 부분을 당신의 빅쿼리 상에서 원하는 ga4 export 경로로 변경하세요
`ga4bigquery.analytics_250794857.events_*`
where
_table_suffix between '20210103' and '20210203'
본 예시에서는 지난 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))
date_sub(current_date(), interval 1 day)
두 형식의 조합은 제가 주로 선호하는 형태입니다. (본 예시에서는 오늘 - 하루를 빼는 작업)
데이터 세트에 새 데이터가 추가되면 쿼리에 자동으로 포함됩니다. 이 예에서는 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에 대한 설정을 해주는게 기존 쿼리 에러를 덜어줄 수 있는 방법이라 생각이 든다.