티스토리 뷰

DBT와 Airflow를 도입한다고 전달받아서 DBT에 대한 사전 공부가 필요했다. 이번 글은 DBT에 대한 개념을 다룬 글이 될거고, 이후로는 도입기를 작성해둘 예정이다.


DBT 소개

DBT(Data Build Tool)는 SQL을 사용하여 데이터 변환 작업(ETL 중 T만 담당)을 자동화하고 모듈화하는 데 도움을 주는 오픈 소스 도구이다. 데이터 웨어하우스 내에서 직접 작업을 실행하며, 데이터 모델링, 테스트, 문서화 등의 과정을 단순화하고 효율화 한다. 

 

DBT는 사용자가 작성한 SQL 파일을 가져와 실행 가능한 SQL로 컴파일한 다음 이러한 SQL 문을 데이터 웨어하우스에 직접 실행하는 방식으로 작동한다. 추가적인 데이터 로드나 다른 Transformation 용 도구 없이 raw 데이터를 구조화하고 사용 가능한 데이터로 변환할 수 있다. 이런식으로 DBT는 데이터 웨어하우스에 수집된 raw 데이터와 BI를 위해 정제된 데이터 사이를 이어주는 역할을 수행한다.

 

* 그러니까 데이터 변환을 수행할 때 발생하는 수많은 쿼리들이 정리가 힘드니 체계적인 정리를 돕겠다는 툴이다.*

 

주요 용어

갑자기 모델이라는 단어가 계속 나오고 내가 알던 모델의 개념과 다른 듯 하여 혼동이 있었다.

  • 모델(Model)
    • 정의 : DBT에서 모델은 SQL 쿼리의 형태로 저장되며, 데이터를 변환하고 최종 데이터 세트를 생성하기 위한 로직을 정의한다.
    • 사용법 : DBT의 Model은 디렉터리 형태로 존재한다. DBT를 설치하면 초기 프로젝트 구조가 생기는데 이때 models 디렉터리 안에 위치한 SQL 파일들이 DBT에 의해 실행되어 데이터 변환 작업을 수행한다.
  • 소스(Source)
    • 정의 : raw 데이터를 의미하며, DBT 프로젝트에서 변환 과정의 시작점으로 사용된다. 소스는 보통 데이터 웨어하우스 내의 테이블이나 뷰를 가리킨다.
    • 사용법 : {{ source('source_name', 'table_name') }} 형태 Jinja 템플릿을 사용해서 SQL 파일 내에서 소스를 참조한다. 이를 통해 raw 데이터의 위치와 구조를 명확히 할 수 있다.
  • 테스트(Test)
    • 정의 : 데이터 모델의 무결성을 검증하는 과정으로, 데이터가 특정 조건을 만족하는지 확인한다.
    •  사용법 : models 디렉터리 또는 tests 디렉터리 내의 .yml 파일에 정의된다. 여기서 특정 컬럼의 고유성(uniqueness), 무결성(not_null), 참조 무결성(reforeign_key) 등 다양한 데이터 품질 검증을 정의할 수 있다.
  • 매크로(Macro)
    • 정의 : 반복적인 코드를 재사용하기 위한 SQL 함수이다. 매크로를 사용하면 SQL 파일 내에서 복잡한 로직을 간소화하고 코드의 재사용성을 높일 수 있다.
    • 사용법 : macros 디렉터리에 저장된다. Jinja 템플릿 언어를 사용하여 정의되며, 프로젝트 내의 모델이나 다른 매크로에서 호출할 수 있다.
  • 패키지(Package)
    • 정의 : 재사용 가능한 모델, 테스트, 매크로 등을 포함하는 DBT 프로젝트의 모듈이다. 패키지를 사용하면 커뮤니티에서 개발한 모델이나 기능을 자신의 프로젝트에 쉽게 통합할 수 있다.
    • 사용법 : 패키지는 dbt Hub에서 찾을 수 있으며, packages.yml 파일을 통해 프로젝트에 추가된다.

 

DBT에서의 용어 뜻과 사용법을 함께 생각하니 더 이해가 쉬워서 함께 작성해보았다.

이 정도면 DBT가 무얼 위한 툴인지 개념이 잡혔을거라 생각한다. 아래는 간략한 사용 방법이다.


사용 방법

  • DBT 사용을 시작하기 위해서는 먼저 DBT를 설치하고, DBT 프로젝트를 생성해야 한다. 아래 명령어를 실행하면 DBT 프로젝트를 위한 디렉터리들이 생성된다.
pip install dbt
dbt init my_project
  • .dbt/ 디렉터리 밑의 profiles.yml 파일을 수정하여 data warehouse 정보 등 연결 정보를 저장한다.
  • models 디렉터리도 생성되어 있는데 이 디렉터리 아래에 select 를 포함한 SQL 문을 작성한다.

 

이 모델을 바탕으로 데이터 변환 작업을 실행한다. 변환 과정에는 다음과 같은 명령어가 사용된다:

  1. dbt run: 모든 모델을 실행하여 데이터 변환 작업을 수행한다.
  2. dbt test: 정의된 테스트를 실행하여 데이터 모델의 무결성을 확인한다.(tests 디렉터리 아래에 정의된 test파일들 실행)
  3. dbt docs generate: 프로젝트의 문서화를 생성한다.

DBT는 이런식으로 데이터 파이프라인의 개발과 유지보수를 간소화하여, 데이터 팀이 더 높은 품질의 데이터 작업을 더 빠르게 제공할 수 있도록 돕는다. 복잡한 데이터 변환 작업도 SQL 지식만으로 처리할 수 있어, 데이터 분석가와 엔지니어 모두에게 유용한 도구로 보인다. 앞으로 회사에서 DBT를 어떻게 도입할지 점점 더 궁금해진다!

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함