BigQuery Managed Python UDFs로 SQL에서 Python 코드 직접 실행하기
한마디로
BigQuery에서 SQL 쿼리 안에서 Python 라이브러리를 인프라 관리 없이 바로 쓸 수 있게 됐어요
한눈에
BigQuery Managed Python UDFs는 SQL 쿼리 내에서 Python 코드를 직접 실행하는 기능이에요. 데이터 분석가가 NumPy, pandas, scikit-learn 같은 라이브러리를 별도 인프라 없이 곧바로 활용할 수 있고, PyArrow 벡터화 처리로 성능을 최대 10배까지 높일 수 있습니다.
AS-IS: 데이터 파이프라인의 번거로운 다단계 작업
마케팅 데이터 분석 업무를 보면 보통 SQL로 데이터를 추출한 뒤 Python이나 다른 도구로 옮겨서 추가 처리를 했어요. API 연동, 머신러닝 모델로 스코어링, 복잡한 텍스트 가공 같은 작업이 필요할 때마다 데이터 엔지니어와 협업하거나 별도 스크립트 환경을 구성해야 했습니다. 특히 고객 세그먼테이션이나 구매 예측 같은 ML 기반 마케팅 작업에서는 BigQuery에서 분석 데이터를 꺼내 로컬 환경으로 옮기는 과정 자체가 시간 낭비였어요.
이번 내용: SQL 쿼리 내에서 Python 라이브러리 직접 실행
Managed Python UDFs(User Defined Functions)가 정식 출시되면서 SQL SELECT 문 안에서 바로 Python 함수를 정의하고 실행할 수 있게 됐어요. pandas 데이터프레임 처리, scikit-learn으로 머신러닝 모델 적용, SciPy로 통계 계산, 심지어 requests 라이브러리로 외부 API 호출도 SQL 쿼리 내에서 가능합니다. 인프라 관리는 Google Cloud가 알아서 하고, 개발자는 코드만 작성하면 돼요.
성능도 고려됐어요. PyArrow를 기반으로 한 벡터화 처리로 배치 연산 효율을 높여서 기존 방식 대비 최대 10배 빠른 성능을 낼 수 있습니다. 컨테이너 메모리(최대 16GB), vCPU(최대 4), 동시 요청 개수(최대 1,000)를 설정해서 대규모 데이터셋도 처리 가능하고, BigQuery Services SKU로 청구되므로 기존 RI(예약 인스턴스) 할인도 그대로 적용돼요.
마케팅 실무에서 쓸 수 있는 자리
고객 데이터 전처리 & ML 기반 스코어링: 고객 이벤트 로그에서 특성(feature)을 뽑아낼 때 복잡한 문자열 파싱, 시계열 데이터 집계, 결측치 처리를 SQL 쿼리 안에서 한 번에 끝낼 수 있어요. 그 결과로 바로 scikit-learn 모델을 적용해서 구매 확률 점수나 이탈 위험도를 계산하고 마케팅 타겟팅에 쓸 수 있습니다.
API 연동 기반 데이터 보강: 광고주나 마케팅팀이 외부 API(예: 고객 신용 평가 서비스, 지역 경제 지표)를 BigQuery 데이터와 연결해야 할 때, SQL 쿼리 안에서 requests로 API를 호출하고 결과를 행마다 매핑할 수 있어요. 데이터 엔지니어 개입 없이 분석가가 직접 구성할 수 있습니다.
텍스트 분석 & NLP: 고객 피드백, SNS 언급, 이메일 콘텐츠 같은 텍스트 데이터에 감정 분석, 토픽 모델링, 키워드 추출을 SQL 쿼리 내에서 적용할 수 있어요. 전체 데이터를 SQL에서 필터링한 뒤 바로 Python NLP 라이브러리를 걸어서 결과를 테이블로 저장하면 됩니다.
실무 적용 체크리스트
- 현재 pandas/scikit-learn 작업이 별도 스크립트나 노트북으로 진행 중인지 확인
- 해당 Python 라이브러리가 Managed Python UDFs 지원 목록에 있는지 확인(NumPy, pandas, scikit-learn, SciPy, statsmodels 등은 이미 지원)
- 매달 실행 횟수, 데이터 크기, 필요 메모리·CPU를 파악해서 리소스 설정 계획
- 기존 SQL 쿼리에 UDF로 치환할 부분을 식별하고 점진적으로 마이그레이션
자주 묻는 질문
BigQuery Managed Python UDFs와 기존 Python 스크립트의 차이가 뭔가요?
Managed Python UDFs는 SQL 쿼리 안에 Python 함수를 넣어서 실행하므로 데이터 이동이 없어요. 기존에는 BigQuery에서 데이터를 추출해서 로컬 Python 환경으로 옮긴 뒤 처리했는데, 이제는 BigQuery 안에서 끝나서 네트워크 오버헤드와 개발 시간이 줄어듭니다.
성능이 정말 10배까지 빨라지나요?
PyArrow 벡터화 처리를 쓸 때 그 정도 개선을 볼 수 있는데, 실제 성능은 코드 효율, 데이터 크기, 라이브러리에 따라 달라요. 배치 연산(예: 한 번에 수천 행 처리)이 많을수록 개선 효과가 커집니다.
외부 API 호출도 가능한가요?
가능해요. requests 라이브러리를 import하면 SQL 쿼리 안에서 바로 HTTP 요청을 보낼 수 있습니다. 다만 API 응답 시간이 길면 쿼리 타임아웃에 걸릴 수 있으니 타임아웃 설정을 확인하세요.
라이선스나 추가 비용이 들나요?
BigQuery Services SKU로 청구되므로 추가 라이선스는 없어요. 기존 RI 할인도 그대로 적용되고, 컴퓨팅 리소스(메모리·CPU)를 설정해서 비용을 예측할 수 있습니다.
에디터 노트
Managed Python UDFs는 데이터 분석과 ML 전처리를 BigQuery 내에서 끝낼 수 있게 해줘서 개발 속도와 인프라 비용을 크게 줄일 수 있어요. 다만 복잡한 Python 로직이 SQL 쿼리 안에 들어가면 쿼리 가독성이 떨어질 수 있고, 대규모 동시 요청에서는 리소스 할당을 신중하게 설계해야 합니다.
태그
- BigQuery
- Google Cloud의 완전 관리형 데이터웨어하우스로 SQL로 대규모 데이터를 빠르게 분석할 수 있어요
- Managed Python UDFs
- BigQuery 안에서 SQL 쿼리 내에 Python 함수를 정의하고 실행할 수 있는 기능이에요
- PyArrow
- Apache가 만든 컬럼 기반 메모리 형식으로 벡터화 연산으로 데이터 처리 속도를 높여요
- 스코어링
- 머신러닝 모델이 데이터에 확률이나 점수를 매기는 작업이에요
관련 마테크
- Looker 자연어 분석(Conversational Analytics): SQL 없이 인사이트 얻는 법Looker가 Google Cloud의 데이터 에이전트 기능을 강화하면서 SQL 없이 자연어로 질문하면 AI가 자동으로 분석 결과를 제공하게 됐어요
- Open Knowledge Format(OKF)이란? GA4·BigQuery를 AI 에이전트에 연결하는 법Google의 개방형 표준으로 GA4 데이터를 마크다운 기반 지식으로 통일하면 AI 에이전트가 고객 행동 인사이트를 자동으로 활용할 수 있어요
- BigQuery Lightning Engine: Spark 작업 5배 빠르게, 비용 절반으로 줄이는 법BigQuery의 새로운 Lightning Engine이 Apache Spark 작업을 C++ 네이티브 코드로 변환해 성능을 4.9배 향상시키고 기존 파이프라인…
- GA4 탐색(Exploration) 제대로 쓰는 7가지 실무 꿀팁GA4 탐색(Exploration)은 표준 보고서가 못 보여주는 '왜'를 캐는 도구예요. 경로 탐색은 전환에서 거꾸로, 유입경로 탐색은 열린 퍼널로, 세그먼트…