3계층 프로젝트 구조
staging(원천 1:1 경량 변환)-intermediate(중간 비즈니스 로직)-marts(최종 소비 테이블)로 나누는 dbt 프로젝트 조직 패턴.
환경 격리·Deferral·시크릿 관리와 프로젝트 구조화
· Section 5: Production & Deployment, Q44-Q50 및 FAQ 'How do you debug a failing dbt model?' (pp.14-18)
cosmos
Astronomer가 만든 라이브러리로, dbt manifest를 파싱해 Airflow에서 모델별 개별 태스크를 생성해 준다.
dbt Core vs Cloud, Airflow 연동, 상태 기반 CI/CD
· Section 5: Production & Deployment, Q39-Q43 (pp.12-14)
DAG (dbt)
프로젝트 전체의 ref()·source() 호출로 구축되는 방향성 비순환 그래프. dbt가 모델 실행 순서와 병렬화를 결정하는 근거다.
ref()·source()와 DAG, 프로젝트 설정 파일
· Section 1: dbt Fundamentals, Q4-Q10 (pp.2-4)
dbt Fusion
2025년 공개된 Rust 기반의 새로운 dbt SQL 컴파일/실행 엔진. 정적 분석과 다중 웨어하우스 지원을 목표로 한다.
dbt Core vs Cloud, Airflow 연동, 상태 기반 CI/CD
· Section 5: Production & Deployment, Q39-Q43 (pp.12-14)
dbt_utils.generate_surrogate_key
여러 컬럼 값을 구분자로 연결한 뒤 NULL-안전하게 해시해 결정론적 서로게이트 키를 생성하는 dbt-utils 매크로. 옛 이름은 surrogate_key였다.
Jinja와 매크로, run_query(), dbt 패키지
· Section 4: Macros, Packages & Advanced, Q29-Q33 (pp.9-11)
dbt_valid_from / dbt_valid_to
dbt 스냅샷이 각 행 버전이 유효했던 기간을 기록하기 위해 자동으로 추가하는 컬럼.
지연 도착 데이터, 스냅샷(SCD Type 2), {{ this }}
· Section 3: Incremental Models & Performance, Q26-Q28 (pp.8-9)
Deferral
재빌드가 필요 없는 모델에 대해 dev/CI 실행이 프로덕션 테이블을 참조하도록 하는 기능. --defer --state로 활성화하며 dbt Core에도 존재한다.
환경 격리·Deferral·시크릿 관리와 프로젝트 구조화
· Section 5: Production & Deployment, Q44-Q50 및 FAQ 'How do you debug a failing dbt model?' (pp.14-18)
Ephemeral 모델
독립된 오브젝트로 구체화되지 않고, 이를 참조하는 모델의 컴파일된 SQL 안에 CTE로 인라인되는 모델.
dbt란 무엇인가 — 모델과 Materialization
· Section 1: dbt Fundamentals, Q1-Q3 (pp.1-2)
Exposure
대시보드, ML 모델, 리버스 ETL 잡 등 dbt 모델의 다운스트림 소비자를 YAML로 선언해 리니지 그래프에 표시하는 문서화 단위.
소스 프레시니스, 문서 사이트, Exposures
· Section 2: Testing & Documentation, Q16-Q18 (pp.5-6)
generate_schema_name
모델의 custom schema 설정이 최종적으로 어떤 스키마 이름으로 귀결될지 결정하는 dbt 내장 매크로. 기본값은 타겟 스키마와 커스텀 스키마를 이어붙인다.
Pre/Post 훅, 스키마 오버라이드, 태그, var()
· Section 4: Macros, Packages & Advanced, Q34-Q38 (pp.11-12)
Generic 테스트
YAML에 선언해 dbt가 SQL로 컴파일하는 재사용 가능한 테스트. 과거에는 'schema test'로 불렸다.
dbt 테스트 — Generic·Singular 테스트와 실행 제어
· Section 2: Testing & Documentation, Q11-Q15 (pp.4-5)
incremental_strategy
증분 모델이 신규/변경 행을 어떤 SQL 패턴(append/merge/delete+insert/insert_overwrite/microbatch)으로 반영할지 결정하는 설정.
증분 모델의 내부 동작과 incremental_strategy
· Section 3: Incremental Models & Performance, Q19-Q21 (pp.6-7)
is_incremental()
모델이 이미 테이블로 존재하고 --full-refresh가 아닐 때 True를 반환하는 매크로. 조건부 WHERE 필터를 추가하는 데 쓴다.
증분 모델의 내부 동작과 incremental_strategy
· Section 3: Incremental Models & Performance, Q19-Q21 (pp.6-7)
manifest.json / catalog.json
dbt docs generate가 만드는 산출물. 프로젝트의 모델·테스트·소스·컴파일된 SQL 전체를 기술해 문서 사이트와 상태 기반 선택의 근거가 된다.
소스 프레시니스, 문서 사이트, Exposures
· Section 2: Testing & Documentation, Q16-Q18 (pp.5-6)
Materialization
dbt가 모델의 SELECT문을 실제 웨어하우스 오브젝트(뷰/테이블 등)로 만드는 방식. 모델의 config(materialized=...)로 설정한다.
dbt란 무엇인가 — 모델과 Materialization
· Section 1: dbt Fundamentals, Q1-Q3 (pp.1-2)
Materialized View (dbt)
dbt-core 1.6부터 일부 어댑터가 지원하는 materialization. 웨어하우스가 네이티브로 제공하는 자동 갱신 매터리얼라이즈드 뷰를 dbt가 관리하도록 한다.
dbt란 무엇인가 — 모델과 Materialization
· Section 1: dbt Fundamentals, Q1-Q3 (pp.1-2)
microbatch
dbt-core 1.9부터 추가된 incremental_strategy. event_time·batch_size·lookback 설정만으로 시간 구간별 배치 처리와 재처리 범위를 자동화한다.
증분 모델의 내부 동작과 incremental_strategy
· Section 3: Incremental Models & Performance, Q19-Q21 (pp.6-7)
on_schema_change
증분 모델에서 소스 스키마에 컬럼이 추가/제거됐을 때 dbt가 취할 행동을 제어하는 설정(ignore/fail/append_new_columns/sync_all_columns).
증분 모델의 함정 — unique_key, full-refresh, 스키마 변경
· Section 3: Incremental Models & Performance, Q22-Q25 (pp.7-8)
pre-hook / post-hook
모델 실행 직전/직후에 dbt가 실행하는 SQL. 권한 부여, 통계 갱신, 감사 로깅 등에 쓰이며 웨어하우스의 트랜잭션 지원 여부에 따라 롤백 동작이 달라진다.
Pre/Post 훅, 스키마 오버라이드, 태그, var()
· Section 4: Macros, Packages & Advanced, Q34-Q38 (pp.11-12)
profile
대상 환경(웨어하우스 종류, 자격증명, 데이터베이스, 스키마)의 접속 정보. dbt Core는 ~/.dbt/profiles.yml에, dbt Cloud는 UI에 저장한다.
ref()·source()와 DAG, 프로젝트 설정 파일
· Section 1: dbt Fundamentals, Q4-Q10 (pp.2-4)
ref()
다른 dbt 모델을 가리키며 동시에 DAG에 의존성을 등록하는 Jinja 함수. 하드코딩된 테이블명 대신 항상 이것을 사용해야 한다.
ref()·source()와 DAG, 프로젝트 설정 파일
· Section 1: dbt Fundamentals, Q4-Q10 (pp.2-4)
run_query()
컴파일 타임에 SQL을 웨어하우스에 실행해 결과를 Agate 테이블 객체로 반환하는 dbt 함수. 동적 SQL 생성에 쓰이지만 실행 지연을 유발한다.
Jinja와 매크로, run_query(), dbt 패키지
· Section 4: Macros, Packages & Advanced, Q29-Q33 (pp.9-11)
SCD Type 2
차원 테이블에서 행이 변경될 때 이전 값을 삭제하지 않고 새 버전을 추가해 전체 변경 이력을 보존하는 설계 패턴.
지연 도착 데이터, 스냅샷(SCD Type 2), {{ this }}
· Section 3: Incremental Models & Performance, Q26-Q28 (pp.8-9)
Seed
seeds/ 디렉터리의 CSV 파일로, dbt seed 명령으로 웨어하우스에 테이블로 적재된다. 작고 정적인 룩업 데이터 전용이다.
환경 격리·Deferral·시크릿 관리와 프로젝트 구조화
· Section 5: Production & Deployment, Q44-Q50 및 FAQ 'How do you debug a failing dbt model?' (pp.14-18)
severity
테스트 실패 시 파이프라인을 중단시킬지(error, 기본값) 경고만 할지(warn) 결정하는 설정.
dbt 테스트 — Generic·Singular 테스트와 실행 제어
· Section 2: Testing & Documentation, Q11-Q15 (pp.4-5)
Singular 테스트
tests/ 디렉터리 안의 독립 SQL 파일로 작성하는, 실패 행을 반환하는 일회성 테스트. 과거에는 'data test'로 불렸다.
dbt 테스트 — Generic·Singular 테스트와 실행 제어
· Section 2: Testing & Documentation, Q11-Q15 (pp.4-5)
Source Freshness
원천 테이블의 최신 적재 시각(loaded_at_field)이 설정한 임계값보다 오래되지 않았는지 검사하는 dbt 기능.
소스 프레시니스, 문서 사이트, Exposures
· Section 2: Testing & Documentation, Q16-Q18 (pp.5-6)
source()
dbt가 관리하지 않는, EL 도구가 적재한 원천 테이블을 가리키는 Jinja 함수. YAML로 정의한 소스를 참조한다.
ref()·source()와 DAG, 프로젝트 설정 파일
· Section 1: dbt Fundamentals, Q4-Q10 (pp.2-4)
state:modified
현재 프로젝트를 이전 manifest와 비교해 변경된 모델만 골라내는 dbt 선택 문법. +를 붙이면 다운스트림도 포함한다.
dbt Core vs Cloud, Airflow 연동, 상태 기반 CI/CD
· Section 5: Production & Deployment, Q39-Q43 (pp.12-14)
unique_key
merge/delete+insert 증분 전략에서 어떤 행이 '동일한 행'인지 식별하는 데 쓰는 컬럼(들). 누락하면 매 실행마다 중복이 쌓인다.
증분 모델의 함정 — unique_key, full-refresh, 스키마 변경
· Section 3: Incremental Models & Performance, Q22-Q25 (pp.7-8)
var()
dbt_project.yml에 정의되거나 --vars로 런타임에 전달되는 프로젝트 변수를 모델·매크로에서 읽는 함수.
Pre/Post 훅, 스키마 오버라이드, 태그, var()
· Section 4: Macros, Packages & Advanced, Q34-Q38 (pp.11-12)
{{ this }}
현재 모델의 이미 구체화된 테이블을 가리키는 dbt 변수. 주로 is_incremental() 블록 안의 룩백 쿼리에 쓰인다.
지연 도착 데이터, 스냅샷(SCD Type 2), {{ this }}
· Section 3: Incremental Models & Performance, Q26-Q28 (pp.8-9)
매크로 (macro)
macros/ 디렉터리의 .sql 파일에 저장되는 재사용 가능한 Jinja 함수. 모델에서 {{ 매크로명(...) }}로 호출한다.
Jinja와 매크로, run_query(), dbt 패키지
· Section 4: Macros, Packages & Advanced, Q29-Q33 (pp.9-11)