당근, SQL 파싱으로 데이터 리니지 구축! 데이터 신뢰성 UP!

by DD
6개월 전
조회수 14

SQL 파싱 기반의 컬럼 레벨 데이터 리니지 구축으로 데이터 흐름을 시각화함

Spark를 활용하여 대량의 쿼리를 병렬 처리하고, Airflow로 리니지 추출을 자동화함

MCP Server를 통해 LLM이 리니지 정보를 활용, 데이터 품질 문제 해결에 기여

SQL 파싱 기반 리니지 구축의 기술적 배경

당근은 BigQuery의 쿼리 로그를 활용하여 SQL 파싱 방식으로 컬럼 레벨 리니지를 구축했다. 구체적으로 sqlglot 라이브러리를 사용하여 쿼리를 파싱하고, AST(Abstract Syntax Tree)를 분석하여 의존 관계를 추출했다. 따라서 CTESubquery 처리 로직이 핵심 기술이다.

데이터 모델 설계: Raw 테이블과 View의 분리

리니지 데이터는 다양한 목적에 활용되므로, 효율적인 데이터 모델 설계가 중요하다. Raw 테이블은 모든 정보를 보존하고, 목적별로 분리된 View를 구성하여 조회 성능을 향상시켰다. 반면, Raw 테이블은 필터링이 필요한 항목도 포함하여 유연성을 확보했다.

LLM 기반 리니지 활용: MCP Server

당근은 MCP Server를 구축하여 LLM이 리니지 정보를 활용하도록 지원한다. 구체적으로, 최근 30일 쿼리 텍스트를 기반으로 리니지 정보를 제공한다. 따라서 테이블 수정 영향도 분석데이터 품질 문제 해결에 기여하며, 데이터 신뢰성을 높였다.

당근 데이터 지도를 그리다: 컬럼 레벨 리니지 구축기