BigQuery로 들어오는 GA4 데이터

GA4 속성에 BigQuery 연동을 한 번 켜 두면, 그때부터 그 속성으로 들어오는 모든 이벤트가 날짜별 한 개의 테이블로 BigQuery에 자동으로 적재됩니다. 이 글은 “BigQuery에 처음 들어가는 방법”, “들어가서 보이는 화면이 무슨 의미인지”, 그리고 “왜 굳이 GA4 외에 로우 데이터까지 따로 쌓아 두는지”를 차례로 풀어 봅니다.

BigQuery 콘솔에 들어가기

BigQuery는 별도 앱을 설치하지 않고 웹 브라우저로 접속해서 사용합니다. GA4와 동일한 Google 계정으로 로그인하면 됩니다.

① Google Cloud 콘솔 첫 화면

웹 브라우저에서 https://console.cloud.google.com 에 접속하면 아래와 같은 화면이 나옵니다. 상단 좌측에 햄버거(≡) 아이콘이 있고, 우측 본문에 ‘빠른 액세스’ 카드가 보입니다. ‘빠른 액세스’ 카드에 BigQuery가 보인다면 그 카드를 바로 클릭해도 됩니다.

Google Cloud 콘솔의 첫 화면. 좌상단 햄버거(≡) 메뉴와 본문의 ‘빠른 액세스 → BigQuery’ 카드 두 경로 모두로 BigQuery에 접근할 수 있습니다.

② 햄버거 메뉴 → BigQuery

햄버거(≡) 아이콘을 누르면 좌측에서 메뉴 패널이 펼쳐집니다. 즐겨 찾는 제품’ 또는 ‘제품 섹션에서 BigQuery를 클릭합니다. 자주 들어갈 거면 별(★) 아이콘을 눌러 ‘즐겨 찾는 제품’으로 등록해 두면 다음 접속이 한결 빨라집니다. 또는 console.cloud.google.com/bigquery를 북마크해도 됩니다.

햄버거 메뉴 안의 ‘BigQuery’ 항목을 클릭하면 BigQuery Studio가 열립니다.

③ BigQuery Studio — 데이터셋 펼치기

BigQuery Studio에 진입하면 화면 좌측에 프로젝트 트리가 보입니다. 본인 회사 프로젝트(예: hurdlers-web) 옆 화살표를 눌러 펼치면 analytics_<속성ID> 라는 데이터셋이 보입니다 — GA4 연동을 켜면 자동으로 생성된 자리입니다. 데이터셋을 클릭하면 우측 메인 영역에 일별 테이블 목록이 나타납니다(다음 절에서 자세히 다룹니다).

여기까지 도달했다면 이미 절반은 끝났습니다. 이제 화면이 무엇을 보여 주고 있는지 차례로 짚어 봅니다.

어디에 쌓이는가 — 프로젝트 / 데이터셋 / 테이블

BigQuery는 세 단계로 데이터를 정리합니다. 프로젝트 안에 데이터셋이 있고, 데이터셋 안에 테이블이 있는 식입니다. 폴더로 비유하면 ‘회사 폴더 > 분석 폴더 > 이벤트 파일들’과 같은 구조입니다.

  • 프로젝트 — 결제 단위·권한 관리 단위. 보통 한 회사에 1개의 프로젝트를 둡니다.
  • 데이터셋 — 같은 성격의 테이블 묶음. GA4 연동을 켜면 analytics_<속성ID> 이름의 데이터셋이 자동 생성됩니다.
  • 테이블 — 실제로 행과 열이 들어 있는 곳. GA4 데이터는 날짜별로 한 개씩 만들어집니다.

예) 우리가 캡처한 화면의 데이터셋 이름은 analytics_502771866 — 502771866은 GA4 속성 ID입니다. 즉 데이터셋 이름만 보고도 ‘어느 속성의 데이터인지’를 식별할 수 있습니다.

날짜별로 테이블이 하나씩 — events_YYYYMMDD

데이터셋을 열어 보면 events_20251010, events_20251011… 처럼 날짜가 붙은 테이블이 매일 한 개씩 늘어납니다. 하루 분량의 이벤트가 한 테이블에 모이는 구조라고 보면 됩니다.

데이터셋 안의 일별 테이블 목록. 매일 자정 무렵 전날의 데이터가 채워진 새 테이블이 한 개씩 추가됩니다.
  • 적재 주기 — 보통 GA4가 데이터를 수집한 다음 날(현지 기준 24시간 내)에 그 날짜의 테이블이 채워집니다. 즉 ‘오늘 들어온 이벤트’는 ‘내일 아침’에 BigQuery에서 조회 가능합니다.
  • 실시간 데이터는 별도로 events_intraday_YYYYMMDD 라는 ‘오늘자 임시 테이블’에 쌓이며, 자정이 지나면 일별 테이블로 옮겨집니다.
  • 한 번 쌓인 테이블은 안 바뀝니다 — 과거 데이터의 무결성이 보장됩니다.

한 행 = 한 이벤트

이벤트 데이터의 가장 중요한 약속은 “한 줄(row)은 한 번 발생한 이벤트”라는 점입니다. 어떤 사용자가 한 번 클릭했다면 한 줄이, 100번 클릭했다면 100줄이 쌓입니다. 그래서 테이블은 매우 길지만 — 한 줄을 봐도 무슨 일이 일어났는지가 끝까지 식별 가능한 모양으로 설계돼 있습니다.

같은 한 줄 안에 ‘누가(user_pseudo_id) 언제(event_timestamp) 무엇을 했는지(event_name) 어떤 맥락에서(event_params·device·geo·traffic_source) 어떤 사용자 속성을 가지고 있었는지(user_properties)’가 함께 들어가 있습니다.

컬럼 구성 — events 스키마

테이블의 ‘스키마(schema)’ 탭을 열면 어떤 컬럼이 들어 있는지 한눈에 보입니다. GA4가 BigQuery로 보내는 컬럼은 정해져 있어 — 모든 GA4 속성이 동일한 구조의 데이터를 받습니다.

events_YYYYMMDD 테이블의 스키마. 핵심 컬럼은 크게 ‘이벤트 자체’ / ‘사용자 식별’ / ‘디바이스·지리·트래픽’ / ‘이벤트와 함께 보낸 추가 정보’ 네 덩어리로 묶입니다.

이름이 비슷한 것끼리 묶으면 크게 네 덩어리입니다.

그룹대표 컬럼의미
이벤트 자체event_name · event_date · event_timestamp“무슨 일이, 언제 일어났는가”
사용자 식별user_id · user_pseudo_id · user_first_touch_timestamp“누가 일으킨 이벤트인가”
맥락device · geo · traffic_source · app_info · platform“어떤 기기·지역·유입 경로였는가”
이벤트와 함께 보낸 추가 정보event_params · user_properties · items“이 이벤트와 함께 보낸 파라미터·사용자 속성·상품 목록”

왜 로우 데이터를 BigQuery에 적재해 두는가

GA4 화면(보고서·탐색)만으로도 어느 정도 분석은 됩니다. 그런데 분석 깊이를 한 단계 더 올리려면 BigQuery로 받아 두는 편이 압도적으로 자유롭습니다. 이유를 항목별로 자세히 봅니다.

샘플링이 없습니다

GA4 탐색 보고서는 데이터가 일정 분량을 넘으면 ‘일부 표본만 뽑아 추정값을 보여주는’ 샘플링이 일어납니다. 보고서마다 한도가 있고, 캠페인 분석처럼 큰 트래픽 구간에서는 보고서 우측 상단에 “이 데이터는 표본 기반”이라는 표시가 뜹니다. 표본 기반 숫자는 신규 추세 감지에는 쓸 수 있지만, 의사결정·재무 보고에 쓰기엔 부담스럽습니다.

BigQuery는 모든 원본 행을 직접 다룹니다 — 우리가 작성한 SQL이 본 데이터 그대로의 결과를 돌려줍니다. 그래서 “GA4 화면 숫자와 BigQuery 숫자가 다른데요?”라는 상황에서, BigQuery 쪽이 항상 ‘정확한 원본’의 입장입니다.

카디널리티(고유값) 한계가 없습니다

GA4는 한 차원의 고유값이 너무 많아지면 일정 한도를 넘는 값을 ‘(other)’로 묶어 버립니다. 상품 ID·콘텐츠 슬러그·검색어처럼 종류가 수천·수만 종에 달하는 차원이 대표 사례입니다. GA4 화면에서는 ‘상위 N개’만 깔끔히 보이고 나머지는 모두 (other)로 합산되어 분석이 끊깁니다.

BigQuery에는 이 제한이 없습니다. SELECT item_id, COUNT(*) ... 한 줄이면 모든 상품 ID를 그대로 볼 수 있고, 롱테일 영역(거의 안 팔리지만 점점 늘어나는 상품군)까지 추적할 수 있습니다.

보존 기간이 우리의 결정에 따릅니다

GA4의 이벤트 데이터 보존은 최대 14개월입니다. 그 이후 데이터는 ‘집계된 표준 보고서’로만 남고, 원본 이벤트 단위로는 더는 조회할 수 없습니다 — 즉 ‘작년 이맘때 어떤 사용자 그룹의 행동 패턴은 어땠는가’ 같은 질문은 시간이 지나면 답할 수 없게 됩니다.

BigQuery에 적재된 원본은 우리가 지우지 않는 한 영구 보존됩니다. 시즌 비교·연간 코호트 분석·LTV 추적처럼 시간을 길게 두는 분석을 안정적으로 돌릴 수 있습니다.

SQL로 어떤 조합·결합도 가능합니다

GA4 화면은 미리 정의된 ‘측정기준 × 측정항목’ 조합 안에서만 움직입니다. 우리가 원하는 사용자 정의 차원이 두 개를 함께 보는 것조차 안 되는 경우가 있고, ‘이 사용자가 가입 후 3일 안에 구매한 비율’ 같은 단계별 분석은 탐색 보고서의 ‘유입경로’ 모듈로만 — 그것도 제한된 형식으로 — 가능합니다.

BigQuery에선 SQL로 임의의 조인·서브쿼리·윈도우 함수까지 자유롭게 작성합니다. 가입 이벤트와 결제 이벤트를 사용자 단위로 묶고, 그 사이 일수를 계산하고, 코호트별 평균을 내는 일이 SQL 한두 단락이면 됩니다. CRM·결제·광고 비용 데이터를 같은 곳에서 조인해서 ‘이 캠페인의 진짜 ROI’를 구하는 것도 자연스럽습니다.

외부 도구·BI에 그대로 연결됩니다

BigQuery는 ‘분석의 허브’ 자리에 있습니다. Looker Studio·Tableau·Power BI 같은 BI 도구가 BigQuery를 1급 데이터 소스로 지원하고, Python·R·Dataform·dbt·머신러닝 파이프라인도 모두 SQL이나 표준 클라이언트로 BigQuery에 접속합니다.

즉 ‘BigQuery에 모든 GA4 이벤트를 모아 두는 것’ 자체가 우리 회사의 분석 인프라 표준 입구가 됩니다 — 분석 도구를 바꾸더라도, 데이터 소스는 그대로 두고 화면만 바꾸면 됩니다.

분석을 재현·감사할 수 있습니다

의사결정을 위한 숫자는 ‘어떻게 계산했는가’가 검증 가능해야 합니다. GA4 화면에서 손으로 클릭해 뽑은 숫자는 6개월 뒤에 같은 숫자를 다시 만들기 어렵습니다 — 그 사이 GA4 보고서 정의가 바뀌었거나, 우리가 어떤 필터를 걸었는지 잊어버렸을 수 있어서요.

BigQuery에선 모든 분석이 SQL 코드로 남습니다. 코드를 깃 저장소에 두면 ‘이 숫자는 어떤 쿼리로, 어떤 날짜 범위로, 어떤 조건으로 계산했는가’를 영구 기록할 수 있고, 같은 SQL을 다시 돌리면 같은 결과가 나옵니다.

Vertex AI · BigQuery 내 AI 에이전트로 분석을 자동화·자연어화

최근 BigQuery는 단순한 데이터 창고를 넘어 AI 분석 플랫폼으로 확장되고 있습니다. 우리 데이터를 그대로 둔 채 여러 층의 도구가 그 위에서 동작합니다.

  • Gemini in BigQuery — BigQuery Studio 자체에 자연어 인터페이스가 들어 있습니다. “지난 30일간 가장 많이 본 상품 카테고리는?” 같이 한국어로 묻기만 하면 SQL을 대신 작성해 주고 결과를 표·차트로 보여 줍니다. 데이터 캔버스에서는 ‘질문 → 데이터 탐색 → 차트화’를 노트북처럼 이어 갈 수 있습니다.
  • BigQuery ML / 내장 LLM 함수 — SQL 안에서 바로 머신러닝 모델을 학습·예측하거나, ML.GENERATE_TEXT 같은 함수로 LLM(예: Gemini)에게 자연어 작업을 시킵니다. “이 리뷰 문장을 긍정·부정으로 분류해 줘”를 SQL 한 줄로 처리할 수 있습니다.
  • Vertex AI 연동 — Google Cloud의 ML/AI 플랫폼인 Vertex AI는 BigQuery와 같은 권한·데이터셋을 공유합니다. AutoML로 이탈 예측 모델을 학습시키고, 그 예측 결과를 다시 BigQuery 테이블에 적재해 운영 보고서에 끼워 넣는 흐름이 자연스럽게 구성됩니다.

요점은 — 일단 BigQuery에 데이터를 모아 두면, 이후 자연어 분석·자동 예측·AI 에이전트화 같은 한 단계 위의 활용은 ‘데이터를 옮기는 일 없이’ 위에 얹기만 하면 된다는 점입니다.

자주 묻는 질문

연동을 켜기 전 과거 데이터도 BigQuery로 가져올 수 있나요?

아니요. BigQuery 연동은 연동을 켠 시점부터의 데이터만 흘려보내 줍니다. 과거 분량은 GA4 화면이나 GA4 Data API로만 접근할 수 있고, 원본 행 단위로는 받을 수 없습니다. 그래서 이 연동은 가능한 한 빨리 켜 두는 것이 좋습니다.

events_intraday_YYYYMMDDevents_YYYYMMDD는 뭐가 다른가요?

같은 날짜의 데이터를 다른 시점에 보는 두 가지 모습입니다. events_intraday_*오늘 실시간으로 들어오는 중인 임시 테이블이라 일부 컬럼이 비어 있을 수 있습니다. 자정이 지나면 GA4가 그 하루치를 정리해 events_YYYYMMDD 정식 테이블을 만들어 주고, intraday 테이블은 사라집니다. 신뢰할 수 있는 분석에는 정식 일별 테이블을 사용합니다.

BigQuery 비용은 어떻게 발생하나요?

크게 두 가지입니다. 저장 비용(쌓아 둔 데이터 용량)과 쿼리 비용(SQL을 한 번 돌릴 때 스캔한 데이터 양). GA4 이벤트 데이터는 행이 많아도 텍스트 위주라 저장 비용은 보통 크지 않고, 쿼리 비용은 SELECT * 대신 필요한 컬럼만 지정하기’와 _TABLE_SUFFIX로 날짜 범위 좁히기’로 크게 줄일 수 있습니다.

데이터셋 이름의 숫자(analytics_502771866)는 무엇인가요?

GA4 속성 ID입니다. GA4 관리 화면의 ‘속성 설정’에서 같은 숫자를 확인할 수 있습니다. 한 BigQuery 프로젝트에 여러 GA4 속성을 연동하면 데이터셋이 속성별로 하나씩 생기는데, 이 숫자로 어느 속성의 데이터인지를 구분합니다.

SQL을 잘 모르는데도 분석을 시작할 수 있나요?

네. Gemini in BigQuery(자연어 → SQL 자동 변환)와 데이터 캔버스를 이용하면 “지난 7일간 가장 많이 본 페이지는?”처럼 한국어로 물어 결과 표·차트를 받을 수 있습니다. 다만 결과의 정확성을 검증하려면 결국 SQL을 한 번씩 들여다보게 되니, 분석을 본격적으로 하려는 담당자에게는 기본 SQL 학습을 함께 권합니다.

이 문서가 도움이 되셨나요?