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

О команде dbt deps

dbt deps загружает самую последнюю версию зависимостей, перечисленных в вашем файле packages.yml, из git. Для получения дополнительной информации см. Управление пакетами.

Где это уместно, dbt будет отображать актуальные и/или последние версии пакетов, которые перечислены на dbt Hub. Пример ниже.

Это НЕ относится к пакетам, которые устанавливаются через git/локально

packages:
- package: dbt-labs/dbt_utils
version: 0.7.1
- package: brooklyn-data/dbt_artifacts
version: 1.2.0
install-prerelease: true
- package: dbt-labs/codegen
version: 0.4.0
- package: calogica/dbt_expectations
version: 0.4.1
- git: https://github.com/dbt-labs/dbt_audit_helper.git
revision: 0.4.0
- git: "https://github.com/dbt-labs/dbt_labs-experimental-features" # URL репозитория git
subdirectory: "materialized-views" # имя подкаталога, содержащего `dbt_project.yml`
revision: 0.0.1
- package: dbt-labs/snowplow
version: 0.13.0
Installing dbt-labs/dbt_utils@0.7.1
Installed from version 0.7.1
Up to date!
Installing brooklyn-data/dbt_artifacts@1.2.0
Installed from version 1.2.0
Installing dbt-labs/codegen@0.4.0
Installed from version 0.4.0
Up to date!
Installing calogica/dbt_expectations@0.4.1
Installed from version 0.4.1
Up to date!
Installing https://github.com/dbt-labs/dbt_audit_helper.git@0.4.0
Installed from revision 0.4.0
Installing https://github.com/dbt-labs/dbt_labs-experimental-features@0.0.1
Installed from revision 0.0.1
and subdirectory materialized-views
Installing dbt-labs/snowplow@0.13.0
Installed from version 0.13.0
Updated version available: 0.13.1
Installing calogica/dbt_date@0.4.0
Installed from version 0.4.0
Up to date!

Updates available for packages: ['tailsdotcom/dbt_artifacts', 'dbt-labs/snowplow']
Update your versions in packages.yml, then run dbt deps

Предсказуемая установка пакетов

dbt генерирует файл package-lock.yml в корне вашего проекта. Этот файл фиксирует точные разрешённые версии (включая commit SHA) всех пакетов, определённых в файле packages.yml или dependencies.yml. Файл package-lock.yml обеспечивает согласованные и воспроизводимые установки во всех средах.

Когда вы запускаете dbt deps, dbt устанавливает пакеты на основе версий, зафиксированных в package-lock.yml. Это означает, что пока файл с описанием пакетов не изменялся, будут устанавливаться одни и те же версии зависимостей, даже если уже вышли более новые версии этих пакетов. Такая согласованность важна для поддержания стабильности в средах разработки и продакшена, а также для предотвращения неожиданных проблем, связанных с новыми релизами и возможными ошибками.

Если файл packages.yml был изменён (например, добавлен новый пакет или обновлён диапазон версий), то dbt deps автоматически разрешает новый набор зависимостей и соответствующим образом обновляет lock-файл. Вы также можете вручную инициировать обновление, выполнив команду dbt deps --upgrade.

Для поддержания согласованности добавляйте файл package-lock.yml в систему контроля версий. Это гарантирует одинаковое поведение во всех средах и для всех разработчиков.

Управление package-lock.yml

Файл package-lock.yml должен быть изначально зафиксирован в Git и обновляться только тогда, когда вы намерены изменить версии или удалить пакет. Например, запустите dbt deps --upgrade, чтобы получить обновленные версии пакетов, или dbt deps --lock, чтобы обновить файл блокировки на основе изменений в конфигурации пакетов без установки пакетов.

Чтобы полностью обойти использование package-lock.yml, вы можете добавить его в .gitignore вашего проекта. Однако этот подход жертвует предсказуемостью сборок. Если вы выберете этот путь, мы настоятельно рекомендуем добавлять фиксацию версий для сторонних пакетов в вашу конфигурацию packages.

Обнаружение изменений в конфигурации packages

Файл package-lock.yml включает sha1_hash вашей конфигурации пакетов. Если вы обновите packages.yml, dbt обнаружит изменение и повторно выполнит разрешение зависимостей при следующем запуске команды dbt deps. Чтобы обновить файл блокировки без установки новых пакетов, используйте флаг --lock:

dbt deps --lock

Принудительное обновление пакетов

Чтобы обновить все пакеты, даже если файл packages.yml не изменялся, используйте флаг --upgrade:

dbt deps --upgrade

Это особенно полезно для получения последних коммитов из ветки main внутренне поддерживаемого Git-пакета.

warning

Принудительное обновление пакетов может привести к несогласованности сборок, если не управлять этим осторожно.

Добавление конкретных пакетов

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

Пакеты из Hub (по умолчанию)

Пакеты из Hub являются пакетами по умолчанию и их проще всего установить.

dbt deps --add-package dbt-labs/dbt_utils@1.0.0

# с диапазоном семантических версий
dbt deps --add-package dbt-labs/snowplow@">=0.7.0,<0.8.0"

Не Hub пакеты

Используйте флаг --source, чтобы указать тип пакета для установки:

# Git пакет
dbt deps --add-package https://github.com/fivetran/dbt_amplitude@v0.3.0 --source git

# Локальный пакет
dbt deps --add-package /opt/dbt/redshift --source local

Нашли ошибку?

0
Loading