확실
공식
GA4 BigQuery Export는 프로젝트 안에 analytics_<속성ID> 형식의 데이터세트를 만들고, 그 안에 일일 내보내기 결과를 events_YYYYMMDD 테이블로, 스트리밍 내보내기 결과를 events_intraday_YYYYMMDD 테이블로 적재한다. events_intraday_ 테이블은 매일 삭제되는 스테이징 성격의 테이블이다.
주의쿼리를 events_* 와일드카드로 짜면 intraday 테이블까지 함께 스캔돼 중복 집계가 날 수 있다. 확정 리포트는 events_YYYYMMDD만, 실시간 모니터링은 intraday만 보는 식으로 대상 테이블을 분리해야 한다. (Google 애널리틱스 고객센터 스키마 문서(두 테이블의 성격 구분))
확실
공식
GA4 BigQuery Export 스키마의 주요 최상위 필드는 event_date, event_timestamp, event_previous_timestamp, event_name, event_value_in_usd, event_params(반복 레코드), user_id, user_pseudo_id, user_first_touch_timestamp, privacy_info, user_properties(반복 레코드), user_ltv, device, geo, app_info, collected_traffic_source, traffic_source, session_traffic_source_last_click, stream_id, platform, ecommerce, items(반복 레코드, item_params 중첩)이다.
주의event_params와 user_properties는 반복(REPEATED) 레코드라 key/value 구조를 UNNEST로 풀어야 조회된다. 일반 컬럼처럼 event_params.page_location으로 바로 참조하면 값이 나오지 않는다. (Google 애널리틱스 고객센터 스키마 문서(반복 레코드 표기))
확실
공식
GA4 BigQuery Export 스키마 문서는 traffic_source 필드를 '최초 접점(first-touch) 어트리뷰션 데이터'로 정의하며, 이 필드는 intraday(스트리밍) 테이블에는 포함되지 않는다고 명시한다.
주의실시간 대시보드를 intraday 테이블로 만들면서 유입 매체 분해를 넣으려 하면 값이 비게 된다. 유입 매체 기준 리포트는 일일 테이블 확정 이후로 미루거나, collected_traffic_source·session_traffic_source_last_click 등 다른 필드로 설계를 바꿔야 한다. (Google 애널리틱스 고객센터 스키마 문서)
확실
공식
구글 클라우드 공식 문서 '비용 통제 모범사례'가 제시하는 권장 항목에는 맞춤 쿼리 할당량 만들기(Create custom query quotas), 쿼리 실행 전 예상 비용 확인하기(Check the estimated cost before running a query), 쿼리당 청구 바이트 제한하기(Restrict the number of bytes billed per query), 클러스터링되지 않은 테이블에서 LIMIT 사용 피하기(Avoid using LIMIT in non-clustered tables), 테이블 데이터를 살펴보려고 쿼리를 실행하지 않기(Avoid running queries to explore table data), 쿼리 결과를 단계적으로 구체화하기(Materialize query results in stages)가 포함된다.
주의맞춤 쿼리 할당량은 온디맨드(스캔 바이트 과금) 모델에서 의미가 있다. 용량(슬롯) 예약 모델을 쓰면 비용 통제 수단이 예약·약정 설계 쪽으로 바뀐다. (Google Cloud 공식 문서)
확실
공식
BigQuery에서 LIMIT 절은 클러스터링되지 않은 테이블의 쿼리 비용을 줄이지 못한다. 반환 행 수를 제한해도 스캔 대상 전체에 대해 과금되기 때문에, LIMIT 10을 붙여도 테이블 전체를 스캔한 만큼 청구된다.
주의마케팅팀이 '몇 줄만 보려고' LIMIT를 붙여 반복 실행하는 습관이 실제 비용을 만든다. 데이터를 눈으로 확인만 할 목적이면 콘솔의 테이블 미리보기(preview)나 bq head 명령을 쓰라는 것이 같은 문서의 권장이다. (Google Cloud 공식 문서 — Avoid running queries to explore table data)
확실
공식
BigQuery는 쿼리를 실제로 실행하기 전에 콘솔의 쿼리 검사기(query validator) 또는 드라이런(dry run)으로 처리 예상 바이트를 미리 확인할 수 있고, '청구 바이트 최대값(maximum bytes billed)' 설정으로 그 한도를 넘는 쿼리는 실행 자체를 실패시켜 예상치 못한 과금을 막을 수 있다.
주의예상 바이트는 추정치이며 실제 청구 바이트와 완전히 같지는 않을 수 있다. 상한을 너무 낮게 걸면 정상 배치 쿼리까지 실패하므로, 정기 리포트 쿼리는 실제 스캔량을 며칠 관측한 뒤 상한을 정하는 편이 안전하다. (Google Cloud 공식 문서(예상치 표현))
확실
공식
BigQuery 요금은 컴퓨팅(분석)과 스토리지 두 축으로 나뉜다. 컴퓨팅은 쿼리가 처리한 바이트 기준으로 과금하는 온디맨드 모델과, 슬롯을 예약·약정하는 용량(에디션) 모델 중 선택한다. 스토리지는 액티브/장기 구분과 스토리지 청구 모델(논리 바이트/물리 바이트) 설정에 따라 달라진다. 구체적 단가는 리전과 시점에 따라 달라지므로 구글 클라우드 공식 가격표에서 해당 리전 기준으로 확인해야 한다.
주의이 항목은 과금 '구조'까지만 확인된 사실이다. TiB당·GB당 금액은 이번 조사에서 공식 가격표 본문을 전문 확보하지 못했고 개정도 잦아, 원고에 특정 금액을 적지 않는다. 견적은 구글 클라우드 가격 계산기와 공식 가격표로 리전을 지정해 산출한다. (12code 리서치팀 — 공식 가격표 본문 미확보(2026-09-01))
확실
공식
BigQuery의 사전 정의 IAM 역할에는 BigQuery Admin(roles/bigquery.admin), BigQuery Data Viewer(roles/bigquery.dataViewer), BigQuery Data Editor(roles/bigquery.dataEditor), BigQuery Data Owner(roles/bigquery.dataOwner), BigQuery Job User(roles/bigquery.jobUser), BigQuery Metadata Viewer(roles/bigquery.metadataViewer), BigQuery Read Session User(roles/bigquery.readSessionUser) 등이 있다.
주의역할 이름이 비슷해 혼동하기 쉽다. Data Viewer는 '데이터를 볼 권한'이고 Job User는 '쿼리 작업을 실행할 권한'으로 성격이 다르다. (Google Cloud 공식 문서)
확실
공식
BigQuery는 데이터 접근 권한과 작업(쿼리) 실행 권한을 분리한다. Data Viewer 같은 데이터 역할만으로는 쿼리 작업을 실행할 수 없고, 프로젝트 안에서 쿼리를 포함한 작업을 실행하려면 Job User(roles/bigquery.jobUser) 역할이 별도로 필요하다. 이 분리는 최소권한 원칙을 강제하는 설계다.
주의'권한을 줬는데 쿼리가 안 돌아간다'는 문의 대부분이 이 조합 누락에서 나온다. 반대로 조회만 필요한 사람에게 Editor 이상을 주는 것으로 해결하면 과다권한이 된다. (Google Cloud 공식 문서(역할 분리 설명))
확실
공식
BigQuery의 IAM 정책은 조직, 프로젝트, 데이터세트, 테이블·뷰, 루틴, 커넥션 수준에서 설정할 수 있다. 더 세밀한 통제로는 사용자가 접근할 수 있는 테이블 행을 제한하는 행 수준 보안(row-level security)과, 특정 열 접근을 통제하고 데이터 마스킹을 적용할 수 있는 열 수준 보안(column-level security)이 제공된다.
주의행·열 수준 보안은 설정 자체보다 '누가 어떤 등급인지'를 정의한 사내 기준이 먼저 있어야 유지된다. 기준 없이 개별 요청마다 예외를 만들면 몇 달 뒤 아무도 현재 권한 상태를 설명할 수 없게 된다. (12code 리서치팀 — 공식 기능 설명에 운영상 유의점 부기)
확실
공식
BigQuery Data Transfer Service는 예약된 일정에 따라 BigQuery로의 데이터 이동을 자동화하는 관리형 서비스이며, 구글 계열 소스로 Google Ads, Campaign Manager, Display & Video 360, Google Ad Manager, Search Ads 360, YouTube 채널 보고서, YouTube 콘텐츠 소유자 보고서, Google Analytics 4, Google Play를 지원한다(Google Merchant Center, Comparison Shopping Service Center는 프리뷰). 장애·공백 구간을 메우는 백필(backfill) 기능도 제공한다.
주의네이버·카카오 같은 국내 매체는 이 목록에 없다. 국내 매체 데이터는 각 매체의 오픈 API를 직접 호출하는 자체 적재 코드나 별도 커넥터가 필요하다 — 이 차이를 모르고 '전송 서비스 켜면 전 매체가 들어온다'고 계획하면 일정이 어긋난다. (Google Cloud 공식 문서 지원 소스 목록(국내 매체 미포함 확인))
확실
공식
안드로이드 앱의 웹뷰 안에서 발생한 행동을 Google Analytics for Firebase로 측정하려면, 네이티브 코드에서 addJavascriptInterface로 'AnalyticsWebInterface'라는 이름의 자바스크립트 인터페이스를 등록하고, 그 클래스에 @JavascriptInterface로 표시된 logEvent(String name, String jsonParams)와 setUserProperty(String name, String value) 메서드를 노출한다. 웹 페이지는 window.AnalyticsWebInterface.logEvent(name, JSON.stringify(params)) 형태로 호출한다.
주의웹뷰 안 자바스크립트는 네이티브 SDK에 직접 접근할 수 없다. 브릿지 객체 이름이나 메서드 시그니처가 웹 페이지 쪽 호출과 한 글자라도 다르면 예외 없이 조용히 아무 이벤트도 기록되지 않는다. (Firebase 공식 문서(브릿지 경유 구조 설명))
확실
공식
iOS 앱의 웹뷰 측정은 WKWebView에 'firebase'라는 이름으로 등록한 WKScriptMessageHandler가 메시지를 받는 구조다. 웹 페이지는 window.webkit.messageHandlers.firebase.postMessage()로 command: 'logEvent' 또는 command: 'setUserProperty'를 담은 객체를 전달하고, 네이티브 핸들러가 이를 받아 Firebase Analytics를 호출한다.
주의안드로이드와 iOS의 브릿지 호출 방식이 완전히 다르므로, 웹 페이지 쪽 스크립트는 두 인터페이스의 존재 여부를 각각 확인해 분기해야 한다. 한쪽만 구현하면 다른 OS에서 전량 누락된다. (Firebase 공식 문서(플랫폼별 분기 예시))
확실
공식
Firebase 웹뷰 측정 문서는 iOS에서 SDK가 가능한 경우 인앱 구매를 계속 자동 기록하며, 수동으로 기록한 인앱 구매 이벤트를 중복 제거(de-duplicate)하지 않는다고 명시한다.
주의웹뷰 결제 전환이 '누락'되는 문제를 고치려고 수동 로깅을 덧붙이면, 이번에는 자동 기록과 겹쳐 구매가 두 번 세어질 수 있다. 누락 수정 작업은 반드시 중복 여부 검증(주문번호 단위 유일성 확인)과 한 세트로 진행해야 한다. (Firebase 공식 문서(중복 제거 미지원 명시))
유력
공식
GA4 BigQuery Export는 날짜별로 events_YYYYMMDD 테이블을 분리 생성하는 구조이므로, 조회 시 대상 날짜 테이블만 지정하거나 _TABLE_SUFFIX 조건으로 날짜 범위를 좁히면 스캔 대상 자체가 줄어든다. 이는 구글이 비용 통제 모범사례에서 권장하는 '스캔 바이트를 줄이는 설계'와 같은 원리다.
주의두 공식 문서를 결합해 도출한 실무 지침이라 '유력'으로 둔다. 실제 절감폭은 테이블 크기와 쿼리 형태에 따라 다르므로, 드라이런으로 적용 전후 예상 바이트를 비교해 확인하는 절차를 함께 둔다. (12code 리서치팀 — 두 공식 문서 결합 추론)
확실
추정
국내 공식 기준이 없는 성과·품질 지표는 자사 데이터로 기준선을 세워 판단한다. 절차는 ①최소 4주치 기준선 확보 ②한 번에 한 항목만 변경 ③같은 요일끼리 비교 ④가능하면 홀드아웃 그룹을 남겨 대조하는 순서다.
주의이 절차는 12code 내부 집필 기준이며 외부 표준이 아니다. 원고에서 '업계 평균은 N%'처럼 출처 없는 수치를 쓰는 대신 이 절차로 대체한다. (12code 라이브러리 게시글 작성 기준)
출처: 12code 라이브러리 공통 집필 기준 — 근거 없는 수치 대신 자사 기준선 수립 절차