SQL 코드 내에서 반복되는 로직을 재사용 가능한 함수로 변환하여 데이터 변환 작업의 효율성을 높여주는 도구
이 기능은 jinja 템플릿 언어를 활용하여 작성된 것이며, 실제 쿼리가 실행되기 전인 컴파일 단계에서 SQL텍스트로 치환되어 복잡한 연산을 정형화하고 중복 코드를 방지한다
jinja란?
- 문서 안에 변수・조건・반복을 넣을 수 있게 해주는 템플릿 언어
실무에선 주로 문자열 정규화, 날짜 생성, 감사 컬럼 추가 등 공통적인 데이터 처리 패턴에 자주 사용되며, 최대한 작고 명확한 단위로 설계해야한다. 또 비즈니스 로직을 과도하게 포함하기 보단 유틸리티적 성경의 기능만 구현하는 걸 추천한다고 한다
매크로 폴더에 매크로(매크로라 부르고 함수같은 것)을 만든다
{% macro safe_trim(expr)%}
nullif(trim({{expr}}),'')
{%- endmacro%}
{% macro 함수명%}
함수 내용
{%- endmacro%}
위와 같은 포맷으로 만들고 맨 아래 줄에 '-'는 해당 함수내용 뒷줄에 빈공간을 없애주는 trim이다!
sql의 trim은 데이터의 공백을 제거하는 거고 jinja의 트림은 '-'이건데 만들어지는 sql코드의 트림이다