dbt-Essential 시리즈의 마지막 6단계 — 대시보드마다 다르게 계산되는 '매출'의 지표 파편화 문제를, MetricFlow의 semantic model·metric 선언과 조회 시점 SQL 생성으로 해결하고, BI·노트북·API가 하나의 정의를 소비하는 지표 표준화까지 완성합니다.
dbt를 팀의 것으로 만드는 5단계 — packages.yml과 dbt hub 패키지·사내 공통 모듈 전략, manifest 기반 state:modified와 --defer로 바뀐 모델만 검증하는 Slim CI, 그리고 GitHub Actions 배포 파이프라인과 오케스트레이터 연동까지 팀 규모 배포의 전부를 다룹니다.
매번 전체를 다시 만드는 대신 바뀐 행만 병합하는 incremental 모델의 동작 원리(is_incremental() 분기, unique_key, 전략별 차이)와, 원천이 덮어쓰는 값의 변화 이력을 SCD Type 2로 보존하는 snapshot을 재실행 안전성의 관점으로 꿰어냅니다.
dbt SQL이 사실은 Jinja 템플릿이라는 것 — 컴파일 시점에 변수·if·for가 순수 SQL로 펼쳐지는 실행 모델부터, 반복 로직을 함수처럼 묶는 매크로, run_query로 SQL을 생성하는 SQL, adapter.dispatch, 그리고 dbt_utils·codegen 같은 매크로 패키지와 과도한 매크로화의 경계까지 다룹니다.
내장 제네릭 테스트 4종이 컴파일되는 SQL부터 커스텀 테스트·severity 설정, docs 블록과 데이터 카탈로그, ref가 만든 lineage 그래프와 exposure까지 — '이 숫자를 믿어도 되는가'에 코드로 답하는 dbt의 테스트·문서화 체계를 해부합니다.
dbt의 심장인 모델·ref·source를 파고듭니다. SELECT 하나가 뷰·테이블로 구체화되는 materialization 전략, ref()가 하드코딩된 테이블명 대신 의존성 그래프를 세우는 원리, source() 선언과 freshness 검사, 그리고 staging → intermediate → marts 계층형 모델링까지 jaffle-shop ...
Data-Engineering-Essential 오버뷰의 '처리' 단계에서 예고된 dbt(변환·애널리틱스 엔지니어링) 심화 스핀오프. 모델·ref·소스부터 테스트·문서화, 매크로·Jinja, incremental·snapshot, 패키지·CI, 세만틱 레이어까지 6단계로 정복하는 학습 로드맵입니다. 도장깨기 방식으로 진행 상황을 추적합니다.
MapReduce에서 인메모리·DAG 실행의 Spark로 이어진 분산 처리 모델, 이벤트 시간·워터마크·윈도잉으로 무한 스트림을 다루는 Flink/Kafka Streams, 그리고 SQL 변환을 소프트웨어처럼 관리하는 dbt까지 — 저장된 데이터를 가치로 바꾸는 처리 엔진을 정리합니다.