#sql #jinja2 #dbt
Вопрос:
Хотите объединить кортежи из разных макросов в один. Как и в следующем коде, цель состоит в том, чтобы объединить выходные данные
{% macro days15() %}
(1, 2, 3, 4, 5)
{% endmacro %}
{% macro days69() %}
(6,7,8,9)
{% endmacro %}
{% macro days19() %}
{{ days15() }} UNION ALL {{ days69() }}
{% endmacro %}
С ожиданиями, которые days19
возвращают кортеж с объединением значений days15
и days69
.
Ответ №1:
Я знаю, что не отвечаю прямо на ваш вопрос, но лучшим и более СУХИМ подходом для вашего «варианта использования» является создание 1 макроса с 2 параметрами, например:
{% macro days(from, to) %}
(
{%- for i in range(from, to 1) -%}
{{ i }}{{ ',' if not loop.last }}
{%- endfor -%}
)
{% endmacro %}
затем вы можете вызвать макрос с days(1, 5)
помощью , days(6, 9)
и days(1, 9)