О команде dbt clone
Команда dbt clone
клонирует выбранные узлы из указанного состояния в целевую схему(ы). Эта команда использует материализацию clone
:
- Если ваша платформа данных поддерживает клонирование таблиц без копирования (Snowflake, Databricks или BigQuery), и эта модель существует как таблица в исходной среде, dbt создаст её в вашей целевой среде как клон.
- В противном случае, dbt создаст простой указатель в виде представления (
select * from
исходного объекта). - По умолчанию,
dbt clone
не будет воссоздавать уже существующие отношения в текущей цели. Чтобы переопределить это, используйте флаг--full-refresh
. - Вы можете захотеть указать большее количество потоков, чтобы уменьшить время выполнения, так как отдельные команды клон ирования независимы друг от друга.
Команда clone
полезна для:
- непрерывного развертывания blue/green (в хранилищах данных, поддерживающих клонирование таблиц без копирования)
- клонирования текущего производственного состояния в схему(ы) разработки
- обработки инкрементных моделей в заданиях CI dbt Cloud (в хранилищах данных, поддерживающих клонирование таблиц без копирования)
- тестирования изменений кода на зависимостях в вашем BI-инструменте
# клонировать все мои модели из указанного состояния в мою целевую схему(ы)
dbt clone --state path/to/artifacts
# клонировать одну_конкретную_модель из указанного состояния в мою целевую схему(ы)
dbt clone --select "one_specific_model" --state path/to/artifacts
# клонировать все мои модели из указанного состояния в мою целевую схему(ы) и воссоздать все уже существующие отношения в текущей цели
dbt clone --state path/to/artifacts --full-refresh
# клонировать все мои модели из указанного состояния в мою целевую схему(ы), выполняя до 50 команд клонирования параллельно
dbt clone --state path/to/artifacts --threads 50
Когда использовать dbt clone
вместо отложенного выполнения?
В отличие от отложенного выполнения, dbt clone
требует некоторого вычислительного ресурса и создания дополнительных объектов в вашем хранилище данных. Во многих случаях отложенное выполнение является более дешевым и простым альтернативным вариантом dbt clone
. Однако, dbt clone
охватывает дополнительные случаи использования, где отложенное выполнение может быть невозможным.
Например, создавая реальные объекты в хранилище данных, dbt clone
позволяет вам тестировать изменения кода на зависимостях вне dbt (например, в BI-инструменте).
В качестве другого примера, вы можете клонировать
ваши модифицированные инкрементные модели как первый шаг вашего задания CI в dbt Cloud, чтобы избежать дорогостоящих сборок full-refresh
для хранилищ, поддерживающих клонирование без копирования.
Клонирование в dbt Cloud
Вы можете клонировать узлы между состояниями в dbt Cloud, используя команду dbt clone
. Это доступно в dbt Cloud IDE и dbt Cloud CLI и полагается на функцию --defer
. Для получения более подробной информации о defer в dbt Cloud, прочитайте Использование defer в dbt Cloud.
-
Использование dbt Cloud CLI — Команда
dbt clone
в dbt Cloud CLI автоматически включает флаг--defer
. Это означает, что вы можете использовать командуdbt clone
без дополнительной настройки. -
Использование dbt Cloud IDE — Чтобы использовать команду
dbt clone
в dbt Cloud IDE, выполните следующие шаги перед запуском командыdbt clone
:- Настройте вашу Производственную среду и выполните успешный запуск задания.
- Включите Отложить до производства, переключив тумблер в нижнем правом углу командной панели.
- Запустите команду
dbt clone
из командной панели.
Посмотрите этот пост в блоге разработчиков для получения более подробной информации о лучших практиках, когда использовать dbt clone
vs. отложенное выполнение.