О команде 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