상위: dbt
요약
dbt(Data Build Tool)는 ELT 파이프라인에서 Transform을 담당하는 프레임워크이다. 데이터 웨어하우스 안에서 SQL SELECT 문만으로 변환 로직을 정의하고, DDL/DML 없이 테이블과 뷰를 자동 생성한다.
dbt가 해결하는 문제
전통적인 ETL에서는 변환 로직이 Extract, Load와 섞여 관리가 어렵다. 변환 코드가 파이프라인 도구(Airflow, Informatica 등)에 분산되어 있고, 테스트와 문서화가 부재한 경우가 많다.
dbt는 변환 계층만 분리하여 다음을 제공한다:
- SQL 기반 모델 정의 (SELECT만 작성)
- 자동 DDL 생성 (CREATE TABLE/VIEW)
- 내장 테스트 프레임워크
- 자동 문서화 및 리니지 그래프
- Git 기반 버전 관리
ELT에서의 위치

Extract → Load → [dbt] Transform
↑ ↑ ↑
Fivetran Stitch dbt가 담당
Airbyte etc. (웨어하우스 내부)
dbt는 데이터를 추출하거나 적재하지 않는다. 이미 웨어하우스에 적재된 raw 데이터를 변환하는 데만 집중한다. Extract/Load는 Fivetran, Airbyte 같은 도구가 담당한다.
핵심 원칙
SQL as Code
변환 로직을 SQL 파일로 관리한다. Git으로 버전 관리하고, PR 리뷰를 통해 품질을 보장한다.
Modularity
복잡한 변환을 작은 모델 단위로 쪼갠다. 모델 간 의존성은 ref() 함수로 선언하면, dbt가 실행 순서를 자동 결정한다.
Test & Document
모든 모델에 테스트를 붙이고, 설명을 추가하면 자동으로 데이터 카탈로그가 생성된다.
dbt Core vs dbt Cloud
| 구분 | dbt Core | dbt Cloud |
|---|---|---|
| 비용 | 오픈소스(무료) | 유료 SaaS |
| 실행 | CLI (로컬/서버) | 웹 IDE + 스케줄러 |
| 오케스트레이션 | 외부 도구 필요 (Airflow 등) | 내장 스케줄러 + CI/CD |
| Semantic Layer | 없음 | MetricFlow 내장 |
| 적합 | 엔지니어링 팀, 커스텀 환경 | 빠른 시작, 관리형 환경 |
dbt Core와 Cloud는 동일한 변환 엔진을 사용한다. 차이는 인프라 관리 방식이다.
지원 웨어하우스
Snowflake, BigQuery, Databricks, Redshift, PostgreSQL 등 주요 클라우드 웨어하우스를 모두 지원한다. 어댑터(adapter) 방식으로 확장 가능하다.
기본 명령어
dbt init my_project # 프로젝트 초기화
dbt run # 모든 모델 실행
dbt test # 모든 테스트 실행
dbt build # run + test + snapshot 통합 실행
dbt docs generate # 문서 생성
dbt docs serve # 문서 웹서버 실행
관련 개념
- Models: SELECT 문으로 정의하는 변환 단위
- Tests: 데이터 품질 검증
- Project Structure: 프로젝트 레이어 구조