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

О команде dbt build

Команда dbt build выполняет:

  • запуск моделей
  • тестирование тестов
  • создание снимков
  • загрузку данных

В порядке DAG для выбранных ресурсов или всего проекта.

Подробности

Артефакты: Задача build создаст один manifest и один артефакт результатов выполнения. Результаты выполнения будут включать информацию обо всех моделях, тестах, данных и снимках, которые были выбраны для сборки, объединенные в один файл.

Пропуск при ошибках: Тесты на вышестоящих ресурсах будут блокировать выполнение нижестоящих ресурсов, и ошибка теста приведет к тому, что эти нижестоящие ресурсы будут полностью пропущены. Например, если model_b зависит от model_a, и тест unique на model_a не проходит, то model_b будет SKIP.

  • Не хотите, чтобы тест вызывал пропуск? Измените его уровень серьезности или пороги на warn вместо error.
  • В случае теста с несколькими родителями, где один родитель зависит от другого (например, тест relationships между model_a и model_b), этот тест будет блокировать и пропускать только потомков самого нижестоящего родителя (model_b).

Выбор ресурсов: Задача build поддерживает стандартный синтаксис выбора (--select, --exclude, --selector), а также флаг --resource-type, который предлагает окончательный фильтр (как и list). Какие бы ресурсы ни были выбраны, именно они будут запускаться/тестироваться/создаваться/загружаться с помощью build.

  • Помните, что тесты поддерживают косвенный выбор, поэтому dbt build -s model_a будет как запускать, так и тестировать model_a. Что это значит? Любые тесты, которые напрямую зависят от model_a, будут включены, если только эти тесты не зависят также от других невыбранных родителей. См. выбор тестов для подробностей и примеров.

Флаги: Задача build поддерживает все те же флаги, что и run, test, snapshot и seed. Для флагов, которые используются в нескольких задачах (например, --full-refresh), build будет использовать одно и то же значение для всех выбранных типов ресурсов (например, как для моделей, так и для данных будет выполнено полное обновление).

Примеры

$ dbt build
Running with dbt=0.21.0-b2
Found 1 model, 4 tests, 1 snapshot, 1 analysis, 341 macros, 0 operations, 1 seed file, 2 sources, 2 exposures

18:49:43 | Concurrency: 1 threads (target='dev')
18:49:43 |
18:49:43 | 1 of 7 START seed file dbt_jcohen.my_seed............................ [RUN]
18:49:43 | 1 of 7 OK loaded seed file dbt_jcohen.my_seed........................ [INSERT 2 in 0.09s]
18:49:43 | 2 of 7 START view model dbt_jcohen.my_model.......................... [RUN]
18:49:43 | 2 of 7 OK created view model dbt_jcohen.my_model..................... [CREATE VIEW in 0.12s]
18:49:43 | 3 of 7 START test not_null_my_seed_id................................ [RUN]
18:49:43 | 3 of 7 PASS not_null_my_seed_id...................................... [PASS in 0.05s]
18:49:43 | 4 of 7 START test unique_my_seed_id.................................. [RUN]
18:49:43 | 4 of 7 PASS unique_my_seed_id........................................ [PASS in 0.03s]
18:49:43 | 5 of 7 START snapshot snapshots.my_snapshot.......................... [RUN]
18:49:43 | 5 of 7 OK snapshotted snapshots.my_snapshot.......................... [INSERT 0 5 in 0.27s]
18:49:43 | 6 of 7 START test not_null_my_model_id............................... [RUN]
18:49:43 | 6 of 7 PASS not_null_my_model_id..................................... [PASS in 0.03s]
18:49:43 | 7 of 7 START test unique_my_model_id................................. [RUN]
18:49:43 | 7 of 7 PASS unique_my_model_id....................................... [PASS in 0.02s]
18:49:43 |
18:49:43 | Finished running 1 seed, 1 view model, 4 tests, 1 snapshot in 1.01s.

Completed successfully

Done. PASS=7 WARN=0 ERROR=0 SKIP=0 TOTAL=7
0