DBT란?

Bernard Choi (최연식)·2022년 3월 20일
0

DBT는 SQL만으로 데이터 파이프라인을 구성할 수 있게 해주는 툴

새로운 테이블을 만들기 위해서는 80%의 SQL과 20%의 코딩이 들어간다. DA와 DE가 같이 커뮤니케이션을 하여 DA는 쿼리를 짜고 DE는 이를 스크립트화하여 airflow로 관리한다.

DBT는 DA가 쿼리만으로 필요한 테이블을 자급자족할 수 있도록 도와주는 Tool.

dbt Cloud

Pros

SQL 기반 데이터 오퍼레이션에 대한 오버헤드를 줄여주므로, 테이블 모델링과 아키텍쳐에만 집중할 수 있다.

길어지는 SQL을 재사용 가능한 여러개의 모듈들로 쪼갤 수 있다.

## models/example/example.sql
{{ config(materialized='table') }}
select
*
from
{{ ref('hello_world') }}
where customer_id < {{ var('cust_id') }}

디양한 macro와 오픈소스 툴들이 존재한다.

## models/dimensions/dim_date_inc.sql
SELECT
*
from {{ ref('dim_date') }}
where 1=1


{% if is_incremental() %}
and date_key::timestamp > (select max(date_key) - INTERVAL '3 DAY' from {{this}})
{% endif %}

다양한 데이터 유닛 테스팅으로 기존의 파이프라인을 더욱 견고하게 할 수 있다.

## models/example/schema.yml
models:
    - name: my_first_dbt_model
      columns:
          - name: id
            tests:
              - unique

    - name: my_second_dbt_model
      columns:
          - name: id
            tests:
              - unique
              - not_null

Cons

Transform 만을 위한 도구라, Extract나 Load를 위해서는 다른 도구와 같이 사용해야 한다. (Airflow)

DBT를 도입할 경우 DW의 비중이 커지는데 Data Source의 통일성 측면에서 안티패턴(Athena, Redshift)

Redshift의 scalability 문제

CLI? Cloud?

Cli 모드

python 패키지로 dbt를 설치해서 사용한다.

코드베이스

무료 서비스

Cloud 모드

Cli 모드에서 제공하는 모든 기능을 제공 + SQL 통합 개발 환경을 제공

자신의 테이블에 대해 Unit Testing, Git branch 작업환경을 GUI로 제공.

Cronjob 또한 만들 수 있게 해준다.

유료 서비스. (인당 50$)

DBT 도입 시 고려사항

SQL기반의 데이터 조회 및 테이블 생성이 많은가?

체계적인 메타정보와 테이블의 관리가 필요한가? ( adhoc 요청을 처리하는 것이 더 중요한가?)

dbt를 통해서 테이블들을 체계적으로 관리하기 시작하면 현재 어떤 테이블이 관리되고 있고, 누가 오너쉽을 가지고 있고, 어떤 컬럼 및 테스트로 관리되고 있는지 등 메타 정보에 대해서 파악하기 쉬워진다.

원천데이터가 DataLake에도 있고 DataWarehouse에도 있으면 관리가 어렵다. Athena 교육, Redshift 버리기로?

profile
Interested in Data Engineering

0개의 댓글