이 글에서 해결할 과제
BigQuery의 데이터에 접근할 때마다 SQL을 작성하고 실행한 뒤 결과를 확인하는 반복 작업에 시간을 낭비하고 있지는 않으신가요?
경영진이나 사업 담당자가 '지난달 매출 상위 10개 상품을 보고 싶다'고 생각하는 순간, 직접 SQL을 작성하지 않고도 데이터를 가져올 수 있다면 의사결정 주기가 크게 단축됩니다. BigQuery의 Conversational Analytics(대화형 분석) 기능을 사용하면 자연어 질문에 응답하여 SQL을 생성 및 실행하고 답변을 반환하는 데이터 에이전트를 구축할 수 있습니다. 이 글에서는 그 원리와 실제 적용 방법을 설명합니다.
Conversational Analytics란?
Conversational Analytics는 BigQuery에 내장된 AI 기능 중 하나로, Gemini 모델을 활용하여 자연어 쿼리를 SQL로 변환하고 데이터를 조회하는 기능입니다. BigQuery Studio의 채팅 인터페이스에서 사용할 수 있을 뿐만 아니라, API를 통해 자체 애플리케이션이나 에이전트에 통합할 수도 있습니다.
주요 특징은 다음과 같습니다.
- 자연어로 BigQuery 데이터 조회 가능
- 테이블 스키마와 Knowledge Catalog 정보를 컨텍스트로 활용
- 생성된 SQL을 확인 및 수정 후 실행 가능
- 대화의 문맥을 이어받아 연속적인 질문에 답변 가능
사전 준비: Knowledge Catalog 설정
Conversational Analytics의 답변 정확도는 테이블이나 컬럼에 부여된 메타데이터의 품질에 크게 의존합니다. 사전에 Knowledge Catalog에 의미 있는 설명을 기재하는 것이 전제 조건입니다.
-- 테이블에 설명을 부여하는 예시
ALTER TABLE `project.dataset.orders`
SET OPTIONS (
...
컬럼 설명을 정비함으로써 '메일매거진 경유 주문을 집계해 주세요'와 같은 모호한 표현을 channel = 'email'과 같은 조건으로 정확하게 변환할 수 있게 됩니다.
BigQuery Studio에서의 기본 사용법
BigQuery Studio의 '데이터 캔버스(Data Canvas)' 탭을 열고 채팅창에 자연어로 질문을 입력합니다.
예시: 지난달 매출 집계
입력:
지난달(전월) 채널별 매출 합계와 주문 건수를 알려주세요
생성된 SQL (예):
SELECT
channel,
COUNT(order_id) AS order_count,
...
생성된 SQL을 확인하고 문제가 없으면 '실행' 버튼을 누릅니다. 이어서 '상위 3개 채널의 전월 대비 변화도 보여줘'라고 질문하면, 직전 결과를 바탕으로 SQL이 보완됩니다.
API를 사용한 데이터 에이전트 구축
Conversational Analytics 기능은 API를 통해 호출할 수 있으므로, Slack 봇, 사내 웹 앱, Claude Code 상의 에이전트 등에 통합할 수 있습니다.
API 엔드포인트 호출 예시 (Python)
from google.cloud import bigquery_datatransfer_v1
from google.cloud import bigquery
import google.auth
...
반환되는 응답에는 생성된 SQL과 실행 결과(행 데이터)가 모두 포함됩니다. 이를 파싱하여 Slack 메시지나 대시보드에 보기 좋게 표시합니다.
에이전트에 전달할 'instructions' 설계
API로 Conversational Analytics를 호출할 때, instructions 매개변수에 비즈니스 컨텍스트를 기술함으로써 답변 정확도를 높일 수 있습니다.
instructions = """
당신은 EC 사업의 매출 데이터 분석가입니다. 다음 규칙을 따르세요.
- 금액은 모두 부가세 포함(원)으로 표시합니다.
...
"""
instructions는 너무 길어지면 모델의 이해 정확도가 떨어집니다. 비즈니스 규칙은 간결하고 구체적으로 기술하는 것이 중요합니다.
대화 문맥 관리
연속적인 질문에 대응하기 위해서는 세션 ID를 이어받아 API를 호출해야 합니다.
세션을 사용하면 '그중에서도 반품률이 높은 상품은?', '해당 채널에 한정해서 전년 동기 대비를 내줘'와 같은 추가 질문에도 자연스럽게 응답할 수 있습니다.
실무 활용 시나리오
시나리오 1: 아침 회의 전 매출 확인 봇
Slack에 '안녕하세요'라고 입력하면, 전날 매출 요약 정보를 자연어로 답변하는 봇을 구축할 수 있습니다.
- 질문 예시: '어제 채널별 매출과 전주 대비를 알려줘'
- 답변 예시: '어제 총매출은 XX만 엔이었습니다. 채널별로는 paid_search가 최대로 XX만 엔(전주 대비 +12%)입니다.'
시나리오 2: 경영진용 셀프서비스 분석
비개발자인 경영자가 직접 데이터를 조회할 수 있는 사내 웹 애플리케이션을 구축합니다. 입력 양식에 질문을 입력하면, API를 거쳐 BigQuery가 응답합니다.
SQL을 알지 못해도 비즈니스상의 질문에 즉시 데이터로 답을 얻을 수 있는 환경이 갖춰집니다.
시나리오 3: Claude Code 상의 데이터 에이전트
Claude Code × BigQuery MCP를 사용하여 Conversational Analytics API를 호출하는 함수를 도구(tool)로 정의하면, '지난달 ROAS 상위 광고를 조사하고, 해당 광고의 크리에이티브 경향을 요약해줘'와 같은 다단계 분석을 자율적으로 실행하는 에이전트를 만들 수 있습니다.
비용 및 제약 사항 확인
Conversational Analytics의 요금은 내부에서 실행되는 BigQuery 쿼리의 스캔량에 기반합니다. 자연어 질문이 복잡한 SQL로 변환될 경우, 예상치 못한 비용이 발생할 수 있습니다.
대책으로 다음을 수행합니다.
-- 쿼리 비용 상한 설정 (바이트 단위)
-- 프로젝트 설정에서 Maximum Bytes Billed를 지정합니다
-- 예: 500MB = 500 * 1024^2 = 524288000
또한, Conversational Analytics가 참조할 수 있는 테이블 수에 제한이 있기 때문에, 데이터셋을 목적별로 분할하고 에이전트가 사용할 데이터셋을 명시적으로 지정하는 설계가 효과적입니다.
요약
BigQuery의 Conversational Analytics를 활용하면 비개발자도 자연어로 데이터를 조회할 수 있는 데이터 에이전트를 구축할 수 있습니다.
- Knowledge Catalog에서 테이블과 컬럼의 메타데이터를 AI에게 이해시킵니다
- instructions에 비즈니스 규칙을 기술하여 답변 정확도를 높입니다
- 세션 ID를 계승하여 연속적인 질문에 대응합니다
- API를 통해 Slack, 사내 웹 앱, Claude Code에 통합합니다
데이터 분석의 민주화를 실현하기 위한 기반으로서 Conversational Analytics 도입을 검토해 보세요.
데이터 기반 설계, Conversational Analytics 도입 지원, BigQuery × GA4 분석에 대한 상담은 아래에서 문의해 주세요.
Discussion