🙂 DBT
Data Build Tool
✔ dbt 구성 컴포넌트
- 데이터 모델 (models)
- 테이블을 몇 개의 티어로 관리
- 일종의 CTAS, Lineage 트래킹
- Table, View, CTE 등
- 테이블을 몇 개의 티어로 관리
- 데이터 품질 검증 (tests)
- 스냅샷 (snapshots)

✔ dbt 사용 시나리오
- 데이터 변경 사항을 이해하기 쉽고 필요하다면 롤백
- 데이터간 Lineage 확인 가능
- 데이터 품질 테스트 및 에러 보고
- Fact 테이블의 증분 로드 (Incremental Update)
- Dimension 테이블 변경 추적 (히스토리 테이블)
- 용이한 문서 작성

✔ dbt Models: Input
🍦 Model
- ELT 테이블을 만듦에 있어 기본이 되는 빌딩블록
- 테이블이나 뷰나 CTE의 형태로 존재
- 입력, 중간, 최종 테이블을 정의하는 곳
- raw => staging (src) => core
🍦 View
- Select 결과를 기반으로 만들어진 가상 테이블
- 기존 테이블의 일부 혹은 여러 테이블을 조인한 결과를 제공
- CREATE VIEW 이름 AS SELECT ...
- 장점
- 데이터의 추상화: 사용자는 View를 통해 필요 데이터에 직접 접근. 원본 데이터를 알 필요 X
- 데이터 보안: View를 통해 사용자에게 필요한 데이터만 제공. 원본 데이터 접근 불필요
- 복잡한 쿼리의 간소화: SQL(View)을 사용하면 복잡한 쿼리 단순화
- 단점
- 매번 쿼리가 실행되므로 시간 소요
- 원본 데이터의 변경을 모르면 실행 실패
🍦 Model 구성요소
- Input
- 입력(raw)과 중간(staging, src) 데이터 정의
- raw는 CTE로 정의
- staging은 View로 정의
- Output
- 최종(core) 데이터 정의
- core은 Table로 정의
- 이 모두는 models 폴더 밑에 sql 파일로 존재
- 기본적으로는 SELECT + Jinja 템플릿과 매크로
- 다른 테이블 사용 가능 (reference)
✔ dbt Models: Output
🍦 Materialization
- 입력 데이터(테이블)를 연결해서 새로운 데이터(테이블) 생성하는 것
- 추가 transformation이나 데이터 클린업 수행
- 4가지의 내장 materialization 제공
- View: 데이터를 자주 사용하지 않는 경우
- Table: 데이터를 반복해서 자주 사용하는 경우
- Incremental (Table Appends): 과거 레코드를 수정할 필요가 없는 경우
- Ephemeral (CTE): 한 SELECT에서 자주 사용되는 데이터를 모듈화하는데 사용
- 파일이나 프로젝트 레벨에서 가능
- dbt run을 기타 파라미터를 가지고 실행

'데이터엔지니어링' 카테고리의 다른 글
[11주차] 하둡과 Spark (2) (0) | 2024.06.18 |
---|---|
[11주차] 하둡과 Spark (1) (0) | 2024.06.17 |
[10주차] Airflow 고급 기능, DBT와 Data Catalog (3) (1) | 2024.06.05 |
[9주차] Docker & K8s (5) (0) | 2024.05.31 |
[9주차] Docker & K8s (4) (0) | 2024.05.30 |