#jinja2 #dbt
Вопрос:
Как я могу передать имя текущей модели, используя {{this}} в качестве параметра для макроса в функции конфигурации?
Я попробовал несколько вариантов, и ни один из них не работает. модель/Таблица 1.sql
{{ конфигурация(post_hook= calculate_test(«{{это}}»))}}
макрос/calculate_test.sql
{% macro calculate_test(tableN) %}
{%- set tableName = tableN -%}
{% set sql %}
SELECT
COUNT(*) as cnt
FROM {{ tableName }}
{% endset %}
{% set results = run_query(sql) %}
{% endmacro %}
Ответ №1:
Ты почти на месте! Единственное, что у вас есть лишние фигурные скобки и неуместные кавычки. Весь блок конфигурации-это Jinja, поэтому вам не нужны фигурные скобки вокруг «этого».
{{ config(post_hook= “calculate_test(this)” ) }}
Комментарии:
1. Привет, спасибо за ответ! К сожалению, ни то, ни другое не сработало таким образом. Однако это сработало следующим образом: «{{calculate_test(это)}}»
2. приятно слышать. используется ли ваше использование внутри
{{ config(...) }}
блока, как вы указали в вопросе? потому что, если это не так, имеет смысл, почему у вас есть{{
имя макроса. возможно, стоит отредактировать ваш вопрос для будущих людей-это сложный аспект Дзиндзя для понимания!3. да, макрос находится внутри config (), как в приведенном выше примере; однако без добавления скобок, когда я запускал модель, макрос не выполняется, поэтому я добавил их
4. странно! итак, у вас есть фигурные скобки вокруг конфигурации и фигурные скобки вокруг вашего оператора макрокоманды? я ожидал это увидеть, но, может быть, так оно и есть. Я проведу некоторое тестирование и обновлю свой ответ, хотя, похоже, вы правы.
5. действительно, у меня есть 2 набора фигурных скобок: {{ config( post_hook= «{{calculate_test(это)}}») }}