[dbt] 1. dbt?

2024. 11. 20. 21:32·데이터/dbt

dbt

  • 데이터 분석 워크플로우에서 데이터 변환 작업을 관리하고 자동화하는 도구 (data build tool)
  • 주로 ELT 파이프라인의 Transform 단계에서 사용

주요 특징

  • SQL 기반 데이터 변환
    • SQL을 사용하여 데이터 변환
    • 손쉽게 모델링과 변환 작업 수행 가능
  • 모델 정의 및 계층 구조 관리
    • 데이터 변환 작업을 "모델"이라는 단위로 정의
    • 모델은 의존성 그래프로 구성되어, 단계별 데이터 처리 가능
  • 자동화 및 재현성
    • 모델 실행, 데이터 품질 검사, 문서 생성 등의 작업 자동화 가능
    • 동일한 데이터를 재현 가능하게 만들어 분석 일관성 보장
  • 다양한 데이터 웨어하우스 지원
    • Redshift, BigQuery, Snowflake, Spark, Postgres 등
  • 클라우드 버전 존재
    • 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
'데이터/dbt' 카테고리의 다른 글
  • [dbt] 2. Seeds, Sources, Tests, Documentation, Expectations
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Azure
    초보개발자
    부트캠프
    데브코스
    프로그래밍
    Python
    오블완
    자바
    Airflow
    파이썬
    티스토리챌린지
    프로그래머스
    TiL
    데이터 엔지니어
    데이터 엔지니어링 데브코스 4기
    에어플로우
    cloud
    Java
    aws
    데이터 엔지니어링 데브코스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[dbt] 1. dbt?
상단으로

티스토리툴바