return 함수

return 함수

return 함수는 매크로에서 호출자에게 데이터를 반환하는 데 쓸 수 있어요. return 호출을 통해 데이터의 타입(dict, list, int 등)이 보존돼요. 매크로 안에서 return 함수를 표현식(expression)이나 문(statement)으로 사용할 수 있어요.

출처: 문서

본문

인자(Args):

  • data: 호출자에게 반환할 데이터

  • 표현식 — 매크로에서 문자열을 출력하는 게 목표일 때는 표현식으로 써요.

  • do 태그 문 — 출력 문자열을 만들지 않고 return 함수를 실행하려면 do 태그를 가진 문으로 써요. 결과를 템플릿에 직접 삽입하지 않고 작업을 수행하려 할 때 특히 유용해요.

다음 예시에서 {{ return([1,2,3]) }}은 문자열을 직접 출력하는 표현식으로 동작해요. 따라서 반환된 값을 SQL 코드에 직접 삽입하는 데 적합해요.

macros/get_data.sql

{% macro get_data() %}

  {{ return([1,2,3]) }}
  
{% endmacro %}

대안으로 do 태그(또는 표현식-문)를 가진 문을 사용해 출력 문자열을 만들지 않고 return 함수를 실행할 수 있어요.

다음 예시에서 {% do return([1,2,3]) %}은 return 동작을 실행하지만 문자열을 출력하지 않는 으로 동작해요:

macros/get_data.sql

{% macro get_data() %}

  {% do return([1,2,3]) %}
  
{% endmacro %}

models/my_model.sql


select
  -- getdata() returns a list!
  {% for i in get_data() %}
    {{ i }}
    {%- if not loop.last %},{% endif -%}
  {% endfor %}

더 알아보기 (Learn more)

  • return은 매크로의 값을 호출자에게 넘겨주는 핵심 함수예요.
  • 관련 개념: do 태그, Jinja 매크로.