allow_clones
my_project:
outputs:
prod:
type: snowflake
# ... other connection settings
allow_clones: true | false
target: dev
Определение
allow_clones — это настройка уровня профиля, которая определяет, разрешено ли dbt State клонировать таблицы в целевое окружение. По умолчанию dbt State может клонировать таблицу из любого окружения — в том числе из dev в prod, если данные и логика совпадают. Такое поведение предусмотрено намеренно: если вы построили модель в dev и ничего не изменилось, клонирование в prod экономит вычислительные ресурсы по сравнению с повторным построением.
Настройка allow_clones: false для целевого окружения указывает dbt State пропускать кандидатов на клонирование и вместо этого выполнять полное построение, даже если в другом целевом окружении существует подходящая таблица.
Эта настройка влияет только на то целевое окружение, для которого она задана. Другие целевые окружения в том же профиле не затрагиваются.
Пользователям dbt platform следует задать allow_clones как расширенный атрибут в профиле подключения для окружения развертывания:
allow_clones: true | false
Значение по умолчанию
true. Если настройка не указана, клонирование включено, и dbt State клонирует таблицы из любого окружения, где существует подходящая таблица.
Когда следует отключать
Настройка allow_clones: false снижает выигрыш в эффективности от использования dbt State. Для узлов, которые dbt State в противном случае клонировал бы, вместо этого выполняется полное построение. Оцените, необходимо ли такое ограничение для вашего окружения.
Как правило, задавать allow_clones: false не требуется. dbt State выполняет клонирование только тогда, когда SQL-логика исходной таблицы совпадает, а данные в ней новее. Поскольку это определяется по дате изменения таблицы (а не путем прямого сравнения ее содержимого), ручное изменение таблицы вне dbt может обновить дату ее изменения, хотя ее содержимое фактически не будет соответствовать результату полного построения. Оставлять allow_clones включенным безопасно, если вы всегда изменяете содержимое таблиц через dbt, а не редактируете таблицы вручную
Отключение allow_clones полезно в окружениях с нормативными ограничениями, где политика запрещает запись любых данных из схемы разработки в продакшен независимо от их корректности (например, в окружениях с требованиями к управлению данными или аудиту, где источником создания таблицы в продакшене должен быть SQL-запрос, выполненный в хранилище данных, а не клонирование).