Перейти к основному содержимому

О переменной контекста selected_resources

Переменная контекста selected_resources содержит список всех узлов, выбранных текущей командой dbt.

В настоящее время эта переменная недоступна при использовании команды run-operation.

Внимание!

dbt активно строит граф во время фазы парсинга при выполнении проектов dbt, поэтому переменная контекста selected_resources будет пустой во время парсинга. Пожалуйста, прочитайте информацию на этой странице, чтобы эффективно использовать эту переменную.

Использование

Переменная контекста selected_resources представляет собой список всех ресурсов, выбранных текущим селектором команды dbt. Ее значение зависит от использования параметров, таких как --select, --exclude и --selector.

Для данного запуска она будет выглядеть следующим образом:

["model.my_project.model1", "model.my_project.model2", "snapshot.my_project.my_snapshot"]

Каждое значение соответствует ключу в объекте nodes в переменной контекста graph.

Ее можно использовать в макросах в pre-hook, post-hook, on-run-start или on-run-end, чтобы оценить, какие узлы выбраны, и запустить различную логику в зависимости от того, выбран ли конкретный узел.

check-node-selected.sql

/*
Проверьте, выбран ли данный модель, и выполните другое действие в зависимости от результата
*/

{% if execute %}
{% if 'model.my_project.model1' in selected_resources %}

{% do log("model1 включен на основе текущего выбора", info=true) %}

{% else %}

{% do log("model1 не включен на основе текущего выбора", info=true) %}

{% endif %}
{% endif %}

/*
Пример вывода при запуске кода в on-run-start
при выполнении `dbt build`, включая все узлы
---------------------------------------------------------------
model1 включен на основе текущего выбора


Пример вывода при запуске кода в on-run-start
при выполнении `dbt run --select model2`
---------------------------------------------------------------
model1 не включен на основе текущего выбора
*/
0