반응형
kkh1902
Steadily
kkh1902
전체 방문자
오늘
어제
  • 분류 전체보기 (178) N
    • DataEngineering (20) N
      • Spark (7) N
      • Airflow (2) N
      • DBT (2) N
      • Architecture (3) N
      • Data Quality (5) N
      • Infra (1) N
    • 🤖 AI (12) N
      • ML (7)
      • DL (0)
      • LLM (5) N
    • 📚 Study (74)
      • DataEngineering (0)
      • Spring (9)
      • Java (2)
      • Html, css (10)
      • JS, JQuery (29)
      • DB (5)
      • DevOps (13)
      • roadmap (2)
      • Architecture (1)
      • Flutter (2)
    • 💻 Computer Science (28)
      • Datastructure (0)
      • Algorithm (2)
      • Design pattern (0)
      • Network (1)
      • DB (13)
      • Operating System (0)
      • Software Engineering (4)
      • CS interview (5)
      • topcit (3)
    • ⚒️ Etc (6)
      • Error (3)
      • Trouble_Shooting (2)
      • Dev_environment (1)
    • 📰 News (24)
      • daily (7)
      • think (17)
    • 📘 Hobby (13)
      • English (13)

블로그 메뉴

  • 📋 이력서
  • ⚡️ 깃허브
  • 태그
  • 방명록

공지사항

인기 글

태그

  • React를 배워야하는 이유
  • junit5
  • React # JSX
  • React JS #자습서
  • testcode
  • Flutter
  • React JS # 2 The Basic of React
  • sourcetreee
  • Linear Regression
  • 소프트웨어 공학 #project만들때 중요
  • Wonder # word
  • gitaction
  • git
  • SpringBootTest
  • db
  • think #bootstrap을 써야하는 이유
  • git stash
  • Qr_payment project # CSS 해석 # Basic 맨위 해석
  • 소프트웨어 공학 # chapter1
  • React JS # 자습서 # Component와 Props

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
글쓰기 / 관리자
kkh1902

Steadily

DataEngineering/DBT

DBT란?

2026. 2. 1. 21:08
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
    'DataEngineering/DBT' 카테고리의 다른 글
    • DBT를 왜 써야 하는가, 언제 써야 하는가?
    kkh1902
    kkh1902
    1Day 1 Commit 목표 공부한것들 매일 기록하기

    티스토리툴바