[DBT학습-2] dbt 매크로

한지훈·2026년 1월 18일

데이터파이프라인

목록 보기
7/8

dbt 매크로란?

SQL 코드 내에서 반복되는 로직을 재사용 가능한 함수로 변환하여 데이터 변환 작업의 효율성을 높여주는 도구

동작원리

이 기능은 jinja 템플릿 언어를 활용하여 작성된 것이며, 실제 쿼리가 실행되기 전인 컴파일 단계에서 SQL텍스트로 치환되어 복잡한 연산을 정형화하고 중복 코드를 방지한다

실행순서

  1. dbt가 model.sql을 읽음
  2. 매크로 호출 발견
  3. Jinja가 매크로를 순수 SQL로 치환
  4. 치환된 SQL을 DB에 실행

jinja란?

- 문서 안에 변수・조건・반복을 넣을 수 있게 해주는 템플릿 언어

실무

실무에선 주로 문자열 정규화, 날짜 생성, 감사 컬럼 추가 등 공통적인 데이터 처리 패턴에 자주 사용되며, 최대한 작고 명확한 단위로 설계해야한다. 또 비즈니스 로직을 과도하게 포함하기 보단 유틸리티적 성경의 기능만 구현하는 걸 추천한다고 한다

dbt 매크로 목적

  1. 반복 제거
  2. 규칙 강제
  3. 변경 비용 감소

사용법

매크로 폴더에 매크로(매크로라 부르고 함수같은 것)을 만든다

{% macro safe_trim(expr)%}
    nullif(trim({{expr}}),'')
{%- endmacro%}

{% macro 함수명%}
함수 내용
{%- endmacro%}

위와 같은 포맷으로 만들고 맨 아래 줄에 '-'는 해당 함수내용 뒷줄에 빈공간을 없애주는 trim이다!

sql의 trim은 데이터의 공백을 제거하는 거고 jinja의 트림은 '-'이건데 만들어지는 sql코드의 트림이다

  • jinja의 trim은 맨 뒤에만 넣는 게 보통이다 앞줄에도 넣으면 가독성이 떨어질 수 있다
  • 매크로는 최소 단위로 만든다
  • 매크로 명은 직관적으로 작성해야 한다
profile
데이터엔지니어가 목표입니다

0개의 댓글