728x90
반응형
DBT란 무엇인가?




**DBT(Data Build Tool)**는
👉 데이터 웨어하우스 안에서 SQL로 데이터 변환을 관리해주는 도구야.
한 줄로 말하면:
“ETL에서 T(Transform)를 SQL + 소프트웨어 개발 방식으로 하게 해주는 도구”
DBT가 왜 나왔을까?
예전 데이터 흐름은 보통 이랬어:
- Python / Spark에서 데이터 가공
- 가공된 결과를 DW에 적재
- 로직이 여기저기 흩어짐 😵
👉 문제점:
- SQL은 단순 조회용
- 변환 로직은 코드/스크립트로 분산
- 테스트, 버전 관리, 문서화가 약함
그래서 등장한 개념이:
ELT
- E (Extract): 데이터 수집
- L (Load): DW에 그대로 적재
- T (Transform): DW 안에서 SQL로 변환
➡️ 이 Transform을 체계적으로 해주는 도구가 DBT
DBT의 핵심 개념 5가지
1️⃣ Model (모델)
- 하나의 SQL 파일 = 하나의 테이블/뷰
- select 쿼리만 작성하면 됨
select
user_id,
count(*) as order_cnt
from {{ ref('orders') }}
group by user_id
👉 DBT가 이걸 실행해서 테이블/뷰를 만들어줌
2️⃣ Ref (의존성 관리)
{{ ref('stg_orders') }}
- 테이블 이름 하드코딩 ❌
- 모델 간 의존성 자동 관리
- 실행 순서도 DBT가 알아서 정함
👉 DAG(그래프)가 자동 생성됨
3️⃣ Test (데이터 품질 체크)
SQL 기반 데이터 테스트
tests:
- not_null
- unique
- null 있으면 실패 ❌
- 중복 있으면 실패 ❌
👉 **“데이터에도 테스트가 필요하다”**는 개념
4️⃣ Documentation (문서화)
- 컬럼 설명
- 테이블 설명
- 모델 관계
dbt docs generate
dbt docs serve
👉 자동 데이터 카탈로그 생성
👉 신입/협업 시 엄청 유용
5️⃣ Version Control (Git)
- SQL 파일 = 코드
- Git으로 관리
- PR 리뷰 가능
👉 데이터 작업을 개발처럼 관리
DBT 프로젝트 구조 (실무에서 많이 쓰는 패턴)
models/
├── staging/ # raw → 정제
├── intermediate/# 중간 계산
└── marts/ # 비즈니스 테이블
이걸 흔히 이렇게 매핑해:
개념역할
| staging | raw 데이터 정리 |
| marts | 분석/리포트용 |
| intermediate | 복잡한 중간 로직 |
👉 Kimball 방식(Dimensional Modeling) 과 잘 맞음
DBT의 장점 요약
✔ SQL만 알면 됨
✔ 변환 로직이 한 곳에 모임
✔ 테스트 + 문서 자동화
✔ 실행 순서 자동 관리
✔ 협업 & 유지보수 쉬움
DBT는 무엇이 아니다 ❌
❌ 데이터 수집 도구 아님 (Airbyte, Fivetran 역할 아님)
❌ 스트리밍 처리 도구 아님
❌ Spark 대체 아님
👉 “DW 안에서의 변환 전용 도구”
언제 DBT를 쓰면 좋을까?
- BigQuery / Redshift / Snowflake 사용 중
- SQL 기반 분석이 많은 팀
- 데이터 품질, 재현성, 협업이 중요할 때
- Medallion / DW / DM 구조를 만들 때
한 문장 요약 (블로그 마무리용)
DBT는 데이터 변환을 SQL과 소프트웨어 개발 방식으로 관리하게 해주는 도구로, 현대 데이터 스택의 핵심 구성요소다.
728x90
반응형
'DataEngineering > DBT' 카테고리의 다른 글
| DBT를 왜 써야 하는가, 언제 써야 하는가? (0) | 2026.02.01 |
|---|