dbt
- 데이터 분석 워크플로우에서 데이터 변환 작업을 관리하고 자동화하는 도구 (data build tool)
- 주로 ELT 파이프라인의 Transform 단계에서 사용
주요 특징
- SQL 기반 데이터 변환
- SQL을 사용하여 데이터 변환
- 손쉽게 모델링과 변환 작업 수행 가능
- 모델 정의 및 계층 구조 관리
- 데이터 변환 작업을 "모델"이라는 단위로 정의
- 모델은 의존성 그래프로 구성되어, 단계별 데이터 처리 가능
- 자동화 및 재현성
- 모델 실행, 데이터 품질 검사, 문서 생성 등의 작업 자동화 가능
- 동일한 데이터를 재현 가능하게 만들어 분석 일관성 보장
- 다양한 데이터 웨어하우스 지원
- Redshift, BigQuery, Snowflake, Spark, Postgres 등
- 클라우드 버전 존재
- dbt cloud
- dbt cloud
주요 구성 요소
dbt_project.yml
- dbt 프로젝트 설정 파일
- 프로젝트 이름, 모델 경로, 테스트, 타겟 설정 등 정의
- 예시
name: my_project
version: 1.0
profile: my_profile # profiles.yml에서 연결 정보 설정
models:
my_project:
materialized: table # 기본 테이블 형식
profiles.yml
- 데이터 웨어하우스 연결 정보가 포함된 파일
- ~/.dbt/profiles.yml에 위치
- 예시
my_profile:
target: dev
outputs:
dev:
type: redshift
host: my-redshift-cluster.amazonaws.com
user: my_user
password: my_password
port: 5439
dbname: my_database
schema: my_schema
Model
- 데이터 변환 작업을 정의하는 SQL 파일
- 기본적으로 models/ 디렉터리에 저장
- DBT의 실행을 통해 데이터 변환
- dbt_project.yml 파일의 Materialized 설정을 통해 저장 방식 정의 가능
- view : 데이터베이스 뷰로 저장
- table : 테이블로 저장
- incremental : 증분 방식
- ephemral : 물리적으로 저장하지 않고 참조만 수행하는 Temp table 방식
- 의존성 관리
- 모델간 의존성을 명시적으로 설정 가능
- ref() 함수를 통해 다른 모델 참조 가능
Macro
- 재사용 가능한 코드 블록
- Jinja Template 사용
- 반복적인 SQL 작성 작업 감소
- 예시
Test
- 데이터 검증을 위한 간단한 조건 정의
- not_null : null 여부 확인
- upique : 중복 여부 확인
- relationships : 외래 키 관계 확인
Snapshot
- 데이터의 시간별 변화 추적
'데이터 > dbt' 카테고리의 다른 글
[dbt] 2. Seeds, Sources, Tests, Documentation, Expectations (0) | 2024.11.21 |
---|