BigQuery의 데이터 전처리 시간이 오래 걸리는 이유
BigQuery에 가져온 원시 데이터를 그대로 분석에 사용하기는 어렵다. 실무에서는 다음과 같은 전처리가 필요하다.
- 컬럼별로 NULL 값이나 공백 문자 처리 방안을 검토한다.
- 날짜나 금액의 포맷이 소스마다 다르다.
- 중복 레코드를 식별하여 제외하는 로직을 구상한다.
- 이상치(Outlier)의 임계값을 데이터 분포를 기반으로 결정하고 플래그를 지정한다.
- 카테고리 이름 표기 오류를 통일한다 (예: '東京都', '東京', 'Tokyo' 등).
이러한 작업들을 SQL로 처음부터 작성하면 시간이 오래 걸리고, 검토하는 수고도 크다. BigQuery의 Data Preparation Agent를 사용하면 자연어로 클렌징 지시를 내리면서 작업을 진행할 수 있다.
본 기사에서는 Data Preparation Agent를 활용한 데이터 클렌징 절차를 설명한다.
Data Preparation Agent란
Data Preparation Agent는 BigQuery Studio에 통합된 AI 에이전트 기능 중 하나로, 데이터 품질 개선 및 전처리를 전문으로 한다. 자연어로 클렌징 방침을 전달하면, 이에 맞는 SQL을 생성하여 실행하고 결과 테이블을 출력한다.
다른 에이전트와의 역할 분담은 다음과 같다.
| 에이전트 | 주요 용도 |
|---|
| Data Engineering Agent | 파이프라인 구축/개수/마이그레이션 |
| ... | |
사전 준비
필요한 권한
Data Preparation Agent를 이용하려면 다음 IAM 역할이 필요하다.
roles/bigquery.dataEditor
(데이터셋에 대한 쓰기 권한)
roles/bigquery.jobUser
(쿼리 실행 권한)
roles/bigquery.connectionUser
(Vertex AI 연결 사용 권한)
roles/aiplatform.user
(Vertex AI 모델 사용 권한)
Vertex AI 연결 설정은 K-02 'BigQuery에서 AI 기능을 사용하기 위한 IAM 및 Vertex AI 연결 설정'을 참조하라.
Agent 실행
BigQuery Studio를 열고, 화면 오른쪽 상단의 'Agent' 아이콘을 클릭한다. 에이전트 패널이 열리면 'Data Preparation'을 선택한다.
단계 1: 데이터 품질 진단
클렌징을 시작하기 전에 대상 테이블의 품질 상태를 Agent에게 진단하게 한다. 여기서는 EC 주문 데이터를 예로 진행한다.
Agent 지시
테이블 'analytics.raw_ec_orders'의 데이터 품질을 진단해 주세요.
NULL 값 비율, 중복 행 유무, 각 컬럼의 타입과 값 분포를 확인해 주세요.
Agent는 테이블 전체를 스캔하여 품질 보고서를 반환한다.
데이터 품질 보고서: analytics.raw_ec_orders
총 행 수: 892,341행
컬럼별 NULL 비율:
...
이 진단 결과를 바탕으로 클렌징 방침을 결정한다.
단계 2: NULL 값 처리
진단 결과에 따라 NULL 값 처리 방침을 Agent에게 전달한다.
Agent 지시
다음 방침으로 NULL 값을 처리해 주세요.
- order_date가 NULL인 경우: 레코드 제외
- amount가 NULL인 경우: 0으로 채우기
...
Agent가 생성하는 SQL:
CREATE OR REPLACE TABLE `analytics.cleaned_ec_orders_v1` AS
SELECT
order_id,
...
Agent는 쿼리 실행 후 처리 결과를 보고한다.
처리 완료
입력 행 수: 892,341행
제외된 행 수 (order_date NULL): 842행
...
단계 3: 중복 레코드 제거
다음으로 중복 행을 제거한다. EC 데이터에서는 동일한 order_id가 여러 번 가져와지는 경우가 있다.
Agent 지시
'analytics.cleaned_ec_orders_v1'에서 order_id 중복을 제거해 주세요.
동일한 order_id가 여러 개 있는 경우, 가장 최근에 가져온 레코드(행 번호가 큰 것)를 남겨주세요.
결과는 같은 테이블에 덮어쓰기 해 주세요.
Agent가 생성하는 SQL:
실제 테이블에 _row_number
열이 없는 경우, Agent는 대체안으로 취득 일시 컬럼을 사용한 중복 제거 쿼리를 제안한다.
단계 4: 날짜 형식 통일
Agent에게 지시할 내용
"analytics.cleaned_ec_orders_v1"의 order_date 컬럼에
"2026/01/15" 형식과 "2026-01-15" 형식이 혼재되어 있습니다.
모두 DATE 타입의 "YYYY-MM-DD" 형식으로 통일해 주세요.
Agent가 생성하는 SQL:
CREATE OR REPLACE TABLE `analytics.cleaned_ec_orders_v1` AS
SELECT
* EXCEPT(order_date),
...
단계 5: 이상치 처리
금액의 음수 값이나 명백한 비정상치를 제외하거나 플래그를 지정한다.
Agent에게 지시할 내용
amount 의 분포를 확인하고, 이상치 처리를 해 주세요.
- amount < 0 인 레코드는 제외
- amount가 상위 0.1% (99.9 퍼센타일)를 초과하는 경우는 is_outlier = TRUE 플래그를 지정
...
Agent가 생성하는 SQL:
CREATE OR REPLACE TABLE `analytics.cleaned_ec_orders_v2` AS
WITH stats AS (
SELECT
...
Agent는 실행 후 분포의 변화를 보고한다.
처리 완료
제외 행 수(amount < 0): 47행
이상치 플래그(is_outlier = TRUE): 893행 (전체의 0.1%)
...
단계 6: 카테고리명 표기 불일치 통일
도도부현명 등 표기 불일치가 많은 컬럼을 정규화한다.
Agent에게 지시할 내용
prefecture 컬럼의 표기 불일치를 확인하고, 통일안을 제시해 주세요.
"東京都"로 통일해야 할 패턴을 리스트업하고,
REPLACE 함수를 사용한 정규화 쿼리를 생성해 주세요.
Agent의 출력 예:
감지된 표기 불일치(도쿄도 관련):
- "東京" → "東京都" (12,341건)
- "TOKYO" → "東京都" (234건)
...
CREATE OR REPLACE TABLE `analytics.cleaned_ec_orders_v2` AS
SELECT
* EXCEPT(prefecture),
...
클렌징 결과 검증
일련의 클렌징이 완료되면, Agent에게 검증을 요청한다.
Agent에게 지시할 내용
"analytics.cleaned_ec_orders_v2"의 데이터 품질을 재진단해 주세요.
원 테이블과 비교하여 개선된 항목을 목록으로 해 주세요.
Agent는 차이점 리포트를 반환한다.
데이터 품질 비교 리포트
| 지표 | 클렌징 전 | 클렌징 후 |
|---|---|---|
...
처리를 파이프라인화하기
한 번 확인한 클렌징 로직은 스케줄 쿼리나 Cloud Composer의 DAG로 주기적으로 실행할 수 있다.
Agent에게 지시할 내용
이번 클렌징 절차를 요약한 하나의 SQL 쿼리로 출력해 주세요.
"analytics.raw_ec_orders"를 입력으로 "analytics.cleaned_ec_orders"로 출력하는 형태로 해 주세요.
Agent는 각 단계를 통합한 SQL을 생성한다. 이것을 BigQuery의 스케줄 쿼리에 설정하면, 매일 아침 자동 실행이 가능해진다.
주의사항
클렌징 방침 확인
Agent가 제안하는 처리 내용(NULL의 보완값, 이상치의 임계치 등)은 비즈니스의 맥락에 맞춰 그때그때 확인해야 한다. 예를 들어 "amount = 0"이 정상 주문인지 취소인지 여부는 업무 지식이 없으면 판단할 수 없다.
원 테이블은 유지한다
Agent가 생성하는 SQL은 기존 테이블을 덮어쓰는 경우가 있다. 작업 전에 원 테이블의 스냅샷을 찍거나, 새로운 테이블 이름으로 저장하는 운영을 철저히 한다.
대용량 데이터에 적용
테이블이 수십억 행 규모일 경우, 클렌징 처리 비용이 커진다. Agent에게 '처리 대상을 최근 1개월로 한정하여 먼저 확인하고 싶다'고 전달함으로써, 검증 단계의 비용을 줄일 수 있다.
요약
Data Preparation Agent를 사용하면 다음과 같은 클렌징 작업을 자연어로 진행할 수 있다.
- 데이터 품질 진단 (NULL률・중복・포맷 혼재 여부 확인)
- NULL 값 보완 및 제외
- 중복 레코드 제거
- 날짜・문자열 포맷 통일
- 이상치(Outlier) 제외 및 플래그 지정
- 카테고리명 표기 불일치 통일
SQL을 처음부터 작성해야 하는 수고가 줄어들어, 클렌징 방침 검토와 리뷰에 집중할 수 있다. 다음 K-25에서는 BigQuery MCP 서버를 사용하여 Agent가 BigQuery를 조작하는 방법을 설명할 예정이다.
BigQuery의 데이터 활용 및 AI 기능 도입에 대해 실무 레벨의 지원을 제공하고 있습니다. 상담은 여기에서 부탁드립니다.
토론