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

Команды заданий

Производственное задание в dbt Cloud позволяет настроить систему для выполнения задания dbt и команд задания по расписанию, вместо того чтобы запускать команды dbt вручную из командной строки или IDE. Задание состоит из команд, которые "связываются" вместе и выполняются как шаги выполнения. Каждый шаг выполнения может быть успешным или неудачным, что может определить статус выполнения задания (Успех, Отмена или Ошибка).

Каждое задание позволяет вам:

  • Настраивать команды задания
  • Просматривать детали выполнения задания, включая время, артефакты и подробные шаги выполнения
  • Получать доступ к журналам для просмотра или помощи в отладке проблем и исторических вызовов dbt
  • Настраивать уведомления и другое

Типы команд заданий

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

Во время выполнения задания команды "связываются" вместе и выполняются как шаги выполнения. Когда вы добавляете команду dbt в разделе Commands, вы можете ожидать различных результатов по сравнению с опцией флажка.

Настройка флажков и списка командНастройка флажков и списка команд

Встроенные команды

Каждый вызов задания автоматически включает команду dbt deps, что означает, что вам не нужно добавлять ее в список Commands в настройках вашего задания. Вы также заметите, что каждое задание будет включать шаг выполнения для повторного клонирования вашего репозитория и подключения к вашей платформе данных, что может повлиять на статус вашего задания, если эти шаги выполнения не будут успешными.

Результат задания — Во время выполнения задания встроенные команды "связываются" вместе. Это означает, что если один из шагов выполнения в цепочке не удается, то следующие команды не выполняются, и все задание завершается с ошибкой "Ошибка".

Неудачное задание, в котором произошла ошибка во время шага выполнения dbt deps.Неудачное задание, в котором произошла ошибка во время шага выполнения dbt deps.

Команды с флажками

Для каждого задания у вас есть возможность выбрать флажки Generate docs on run или Run source freshness, позволяя вам автоматически выполнять команды.

Результат задания с флажком Generate docs on run — dbt Cloud выполняет команду dbt docs generate после перечисленных команд. Если этот конкретный шаг выполнения в вашем задании не удается, задание все равно может быть успешным, если все последующие шаги выполнения успешны. Подробнее читайте в разделе Настройка задания документации.

Результат задания с флажком Source freshness — dbt Cloud выполняет команду dbt source freshness как первый шаг выполнения в вашем задании. Если этот конкретный шаг выполнения в вашем задании не удается, задание все равно может быть успешным, если все последующие шаги выполнения успешны. Подробнее читайте в разделе Source freshness.

Список команд

Вы можете добавлять или удалять столько команд dbt, сколько необходимо для каждого задания. Однако вам нужно иметь хотя бы одну команду dbt. На странице справки по командам dbt перечислены несколько команд как "dbt Cloud CLI" или "dbt Core". Это означает, что они предназначены для использования в dbt Core или dbt Cloud CLI, а не в dbt Cloud IDE.

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

Используйте селекторы как мощный способ выбора и выполнения частей вашего проекта во время выполнения задания. Например, чтобы запустить тесты для one_specific_model, используйте селектор: dbt test --select one_specific_model. Задание все равно будет выполнено, если селектор не соответствует ни одной модели.

Сравнение изменений с пользовательскими командами

Для пользователей, у которых включена функция Advanced CI сравнения изменений и выбран флажок dbt compare, вы можете добавить пользовательские команды dbt для оптимизации выполнения сравнения (например, чтобы исключить конкретные большие модели или группы моделей с тегами). Сравнение больших моделей может значительно увеличить время выполнения CI-заданий.

Добавление пользовательских команд dbt при использовании dbt compare.Добавление пользовательских команд dbt при использовании dbt compare.

Следующие примеры показывают, как вы можете настроить поле команды dbt compare:

  • Исключите большую модель fct_orders из сравнения, чтобы выполнить CI-задание на меньшем количестве или меньших моделях и сократить время/ресурсы задания. Используйте следующую команду:

    --select state:modified --exclude fct_orders
  • Исключите модели на основе тегов для сценариев, когда модели имеют общую функцию или характеристику. Используйте следующую команду:

       --select state modified --exclude tag:tagname_a tag:tagname_b
  • Включите модели, которые были непосредственно изменены, а также те, которые находятся на один шаг ниже по потоку, используя селектор modified+1. Используйте следующую команду:

    --select state:modified+1

Результат задания

Во время выполнения задания команды "связываются" вместе и выполняются как шаги выполнения. Если один из шагов выполнения в цепочке не удается, то последующие шаги не выполняются, и задание завершится неудачей.

На следующем изображении примера первые четыре шага выполнения успешны. Однако, если пятый шаг выполнения (dbt run --select state:modified+ --full-refresh --fail-fast) не удается, то следующие шаги выполнения не выполняются, и все задание завершается неудачей. Неудачное задание возвращает ненулевой код выхода и статус задания "Ошибка":

Неудачное выполнение задания, в котором произошла ошибка во время шага выполненияНеудачное выполнение задания, в котором произошла ошибка во время шага выполнения

Неудачи команд заданий

Неудачи команд заданий могут означать разные вещи для разных команд. Некоторые общие причины, по которым команда задания может не выполниться:

  • Неудача при dbt rundbt run выполняет скомпилированные файлы моделей SQL в текущей целевой базе данных. Он завершится неудачей, если в любой из построенных моделей возникнет ошибка. Тесты на вышестоящих ресурсах предотвращают выполнение нижестоящих ресурсов, и неудачный тест пропустит их.

  • Неудача при dbt testdbt test запускает тесты, определенные на моделях, источниках, снимках и семенах. Тест может пройти, не пройти или предупредить в зависимости от его серьезности. Если вы не установили предупреждения как ошибки, только ошибка остановит следующий шаг.

  • Неудача при dbt builddbt build запускает модели, тесты, снимки и семена. Эта команда выполняет ресурсы в порядке, указанном в DAG. Если любой вышестоящий ресурс не удается, все нижестоящие ресурсы пропускаются, и команда завершает работу с кодом ошибки 1.

  • Неудачи селекторов

    • Если select соответствует нескольким узлам и один из узлов не удается, то задание будет иметь код выхода 1, и последующая команда не удастся. Если вы указали флаг —fail-fast, то первая неудача остановит все соединение для любых моделей, которые находятся в процессе выполнения.

    • Если селектор не соответствует ни одному узлу, это не считается неудачей.

Связанные документы

0