빅쿼리로 GA4 실시간 데이터 분석하기
안녕하세요. 그로스 마케팅 파트너, 허들러스의 유준혁 엔지니어입니다.
이번 글에서는 GA4의 실시간 데이터 분석 한계를 해결하는 방법과 BigQuery를 활용해 실시간 데이터를 분석하는 방법에 대해 설명하겠습니다. 이를 통해 GA4의 실시간 데이터 분석 한계를 극복하고, 보다 효율적인 실시간 데이터 분석 방법을 제시하겠습니다.
1. GA4에서 실시간 데이터를 보기 어려운 이유
GA4에서 실시간 데이터를 분석하는 것이 어려운 주된 이유는 몇 가지 제한 사항 때문입니다. 우선, GA4의 실시간 보고서는 최대 30분 이내의 데이터만 제공하기 때문에 그 이상의 데이터를 확인하거나 분석하는 것이 불가능합니다. 이는 즉각적인 의사결정이 필요한 상황에서 부족할 수 있습니다.
또한, GA4의 실시간 보고서에는 데이터 처리 지연이 발생할 수 있어, 사용자가 보고 있는 데이터가 실제로는 몇 분 전의 데이터일 가능성이 있습니다. 이러한 제한은 특히 트래픽 급증이나 중요한 이벤트가 발생할 때 데이터 신뢰성에 큰 영향을 미쳐, 실시간 의사결정에 제약을 줄 수 있습니다.
그리고, GA4의 실시간 보고서는 사용자가 보고서를 원하는 대로 커스터마이징할 수 있는 기능이 부족합니다. 보고서를 완전히 제어할 수 없고, 제공되는 기본 정보에만 의존해야 하므로, 기업이 필요로 하는 맞춤형 실시간 보고서를 만들거나 복잡한 데이터 분석을 하는 데 한계가 있습니다.
이러한 이유로 GA4만으로는 실시간 데이터를 충분히 활용하기 어렵습니다. 이를 보완하기 위해 BigQuery와 같은 외부 데이터 웨어하우스 도구를 활용하는 것이 필요합니다. BigQuery는 실시간으로 대용량 데이터를 처리할 수 있는 기능을 제공하여, GA4의 실시간 보고서 한계를 극복하고 실시간 분석을 가능하게 합니다.
2. BigQuery 로 실시간 데이터 분석하기
2-1. GA4 스트리밍 내보내기 활성화
GA4 데이터를 실시간으로 분석하려면, 가장 먼저 GA4와 BigQuery를 연동하고 스트리밍 내보내기를 활성화해야 합니다. 데이터 내보내기 옵션에는 일별 내보내기와 스트리밍 내보내기가 있습니다. 일별 내보내기는 하루에 한 번 데이터를 전송하는 반면, 스트리밍 내보내기는 데이터를 실시간으로 events_intraday_YYYYMMDD라는 테이블에 전송합니다.
2-2. 쿼리 설정
스트리밍 내보내기를 활성화한 후, BigQuery에서 실시간 데이터를 분석하려면 events_intraday 테이블에서 데이터를 추출하는 쿼리를 작성해야 합니다. 이 쿼리를 통해 시간대별 주요 이벤트, 트래픽 소스 등을 분석할 수 있습니다. 이후 이 데이터를 별도의 테이블에 저장하고, 5분마다 자동으로 실행되도록 예약된 쿼리를 설정할 예정입니다.
예약된 쿼리를 설정하면 실시간 데이터가 5분 단위로 업데이트되며, 미리 설정된 테이블에 데이터가 축적됩니다. 예를 들어, **구매(purchase)**와 같은 모든 이벤트들이 시간대별로 집계되며, 이를 통해 사용자의 행동 패턴을 파악하고 마케팅 캠페인의 성과를 실시간으로 추적할 수 있습니다.
다음으로, 각 단계별로 필요한 설정을 설명 드리겠습니다:
Step 1 : SQL 쿼리 작성
실시간 데이터 분석에서 가장 중요한 단계는 원하는 데이터를 정확하게 추출하고, 이를 기반으로 실시간 리포트를 구성하는 것입니다. 이를 통해 마케팅 캠페인의 성과를 즉각적으로 파악하고 조정할 수 있습니다.
이번 글에서는 트래픽 소스/매체별 세션 수를 분석하는 쿼리를 다룹니다. GA4의 스트리밍 내보내기 데이터를 활용하여, 실시간으로 업데이트되는 정보를 기반으로 마케팅 캠페인의 성과를 추적할 수 있습니다. 이 쿼리를 통해 특정 소스/매체가 얼마나 많은 세션을 유발했는지 실시간으로 분석할 수 있습니다.
이를 통해 실시간으로 변화하는 마케팅 성과를 추적하고, 데이터를 기반으로 보다 효율적인 마케팅 결정을 내릴 수 있습니다.
쿼리예시)
이 쿼리는 GA4의 실시간 데이터를 바탕으로 현재 날짜에 발생한 세션을 시간대별, 트래픽 소스별, 매체별로 집계하는 쿼리입니다. events_intraday_* 테이블에서 오늘 발생한 이벤트 데이터를 추출하여, 시간(hour) 단위로 세션 수를 계산하고 트래픽 소스와 매체에 따라 그룹화한 뒤, 최근 시간 순으로 정렬해 결과를 반환합니다.
쿼리설명)
count(distinct concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')))
쿼리를 작성한 후, BigQuery Studio에서 테스트로 실행하면, 아래와 같이 쿼리 결과가 정상적으로 출력되는 것을 확인할 수 있습니다.
Step 2 : 예약된 쿼리 설정
**'세부정보 및 일정'**에서 예약된 쿼리의 이름을 지정합니다.
실행 주기를 설정하는 단계로 넘어가며, 최소 반복 주기는 5분부터 설정 가능합니다. 이번 예시에서는 5분 간격으로 설정했지만, 필요에 따라 더 짧거나 긴 간격으로 주기를 변경할 수 있습니다.
일정을 모두 작성하셨다면, 화면 아래로 내려가 **"쿼리 결과를 저장할 대상"**에서 데이터 세트 이름과 테이블 이름을 지정해야 합니다. 데이터 세트 이름은 {{프로젝트 이름}}.{{데이터셋 이름}} 형식으로 작성하고, 테이블 이름은 원하는 대로 설정할 수 있습니다.
이때 중요한 점은 "대상 테이블 쓰기" 옵션에서 덮어쓰기를 반드시 선택해야 한다는 것입니다. 만약 "추가" 옵션을 선택하게 되면, 기존 데이터 위에 새로운 데이터가 추가되면서 데이터 중복이 발생할 수 있습니다.
모든 설정이 완료되면 "저장" 버튼을 눌러 쿼리를 예약합니다. 예약된 쿼리가 실행될 때 로그를 이메일이나 Slack으로 알림을 받을 수 있도록 설정할 수 있습니다. 다만, 이번 글에서는 실시간 데이터 추출에 초점을 맞추고 있으므로 이러한 고급 기능은 추후에 자세히 다루겠습니다.
이후, 왼쪽 메뉴 바에서 예약된 쿼리를 클릭하면 설정한 예약된 쿼리를 확인할 수 있습니다.
해당 쿼리의 세부 정보를 확인할 수 있으며, 5분 단위로 반복 실행되도록 설정한 예시에서는 쿼리가 5분 간격으로 정상 작동하는지 확인할 수 있습니다. 이를 통해 실시간 데이터가 설정한 주기마다 자동으로 업데이트 되는지 모니터링 할 수 있습니다.
또한, 생성된 BigQuery 테이블에 대한 정보와 스키마를 확인할 수 있으며, 미리보기를 클릭해 데이터가 정상적으로 수집되고 있는지 직접 확인할 수 있습니다. 이렇게 설정을 완료하면 실시간 데이터 분석이 자동화됩니다.
3. Looker Studio 로 시각화하기
이제 생성한 BigQuery 테이블을 Looker Studio와 연동하여 실시간 차트를 구현할 수 있습니다. 이를 위해, BigQuery 테이블 우측 상단의 '내보내기' 메뉴에서 Looker Studio로 탐색을 클릭합니다. 이 과정에서 실시간 데이터가 Looker Studio로 연결되고, 차트 생성 작업을 시작할 수 있습니다.
이번 글에서는 GA4의 실시간 보고서 한계를 보완하기 위해 BigQuery와 Looker Studio를 활용하여 실시간 데이터를 분석하고 시각화하는 방법을 다뤘습니다. GA4와 BigQuery를 연동하고 스트리밍 내보내기를 활성화한 후, 실시간 데이터를 추출하는 쿼리 작성과 예약된 쿼리 설정을 통해 데이터를 자동으로 업데이트하는 과정을 설명했습니다. 마지막으로, 생성된 데이터를 Looker Studio와 연동해 실시간 차트를 구현하는 방법까지 안내했습니다.
이 과정을 통해 시간대별 트래픽 소스와 사용자 세션을 분석하는 실시간 리포트를 구성하여 GA4의 제한된 실시간 보고서를 보완하고, 보다 효과적인 실시간 의사결정을 내릴 수 있는 기반을 마련할 수 있습니다.
다음 글에서는 예약된 쿼리가 실행될 때 이메일이나 Slack 알림을 설정하는 Pub/Sub 기능을 소개하고, Cloud Functions와 Cloud Scheduler를 활용해 예약된 쿼리를 더 효율적으로 관리하고 테이블 최적화하는 방법에 대해 자세히 다루겠습니다.
긴 글 읽어주셔서 감사합니다.