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

Настройка Redshift

Файл profiles.yml предназначен только для dbt Core и dbt Fusion

Если вы используете dbt platform, вам не нужно создавать файл profiles.yml. Этот файл требуется только в том случае, если вы используете dbt Core или dbt Fusion локально. Чтобы узнать больше о требованиях к Fusion, см. раздел Supported features. Чтобы подключить вашу платформу данных к dbt, см. раздел About data platforms.

  • Поддерживается: dbt Labs
  • Авторы: core dbt maintainers
  • Репозиторий GitHub: dbt-labs/dbt-adapters
  • Пакет PyPI: dbt-redshift
  • Канал в Slack: #db-redshift
  • Поддерживаемая версия dbt Core: v0.10.0 и новее
  • Поддержка dbt: Supported
  • Минимальная версия платформы данных: n/a

Установка dbt-redshift

Установите адаптер с помощью pip. До версии 1.8 установка адаптера автоматически устанавливала dbt-core и любые дополнительные зависимости. Начиная с 1.8 установка адаптера не устанавливает dbt-core автоматически. Это потому, что версии адаптеров и dbt Core были развязаны, и мы больше не хотим перезаписывать существующие установки dbt-core. Используйте следующую команду для установки:

python -m pip install dbt-core dbt-redshift

Настройка dbt-redshift

Конфигурацию, специфичную для Redshift, см. на странице настроек Redshift.

Конфигурации

Поле профиляПримерОписание
typeredshiftТип хранилища данных, к которому вы подключаетесь
hosthostname.region.redshift.amazonaws.com или workgroup.account.region.redshift-serverless.amazonaws.comХост кластера
port5439Порт вашего окружения Redshift
dbnamemy_dbИмя базы данных
schemamy_schemaИмя схемы
connect_timeout30Количество секунд до тайм-аута подключения. Значение по умолчанию — None
sslmodepreferНеобязательный параметр, задаёт режим SSL для подключения к базе данных. По умолчанию используется prefer, при котором для соединения применяется verify-ca. Подробнее о параметре sslmode см. примечание о Redshift ниже
roleNoneНеобязательный параметр, идентификатор пользователя текущей сессии
autocreatefalseНеобязательный параметр, по умолчанию False. Создаёт пользователя, если он не существует
db_groups['ANALYSTS']Необязательный параметр. Список существующих групп базы данных, в которые DbUser будет добавлен для текущей сессии
ra3_nodetrueНеобязательный параметр, по умолчанию False. Включает использование источников из других баз данных
autocommittrueНеобязательный параметр, по умолчанию True. Включает автоматический коммит после каждого выражения
retries1Количество повторных попыток (для каждого выражения)
retry_alltrueПозволяет dbt повторять выполнение всех выражений в запросе
tcp_keepalivetrueПозволяет dbt предотвращать разрыв неактивных соединений промежуточными firewall или балансировщиками нагрузки
tcp_keepalive_idle200Количество секунд бездействия перед отправкой первого keep-alive пакета
tcp_keepalive_interval200Количество секунд бездействия перед отправкой следующего keep-alive пакета
tcp_keepalive_count5Количество отправляемых keep-alive пакетов
Loading table...

Для настройки параметров tcp_keepalive рекомендуем ознакомиться с документацией Redshift, чтобы подобрать конфигурацию, оптимально подходящую для вашего случая.

Параметры аутентификации

Методы аутентификации, которые поддерживает dbt Core на Redshift, включают:

Методы аутентификации, которые dbt Core поддерживает для Redshift:

Нажмите на один из этих методов аутентификации для получения более подробной информации о том, как настроить ваш профиль подключения. Каждая вкладка также включает пример конфигурационного файла profiles.yml для вашего ознакомления.

Следующая таблица содержит параметры для метода подключения на основе базы данных (пароль).

Поле профиляПримерОписание
methoddatabaseОставьте этот параметр неконфигурированным или установите его в database
userusernameИмя пользователя учетной записи для входа в ваш кластер
passwordpassword1Пароль для аутентификации
Loading table...

Пример profiles.yml для аутентификации базы данных

~/.dbt/profiles.yml
company-name:
target: dev
outputs:
dev:
type: redshift
host: hostname.region.redshift.amazonaws.com
user: username
password: password1
dbname: analytics
schema: analytics
port: 5439

# Необязательные конфигурации Redshift:
sslmode: prefer
role: None
ra3_node: true
autocommit: true
threads: 4
connect_timeout: None

Примечания к Redshift

Изменение sslmode

До dbt-redshift 1.5 в качестве драйвера использовался psycopg2. psycopg2 принимает disable, prefer, allow, require, verify-ca, verify-full в качестве допустимых значений для sslmode и не имеет параметра ssl, как указано в документации PostgreSQL doc.

В dbt-redshift 1.5 мы перешли на использование redshift_connector, который принимает verify-ca и verify-full в качестве допустимых значений для sslmode и имеет параметр ssl со значением True или False, согласно документации redshift doc.

Для обратной совместимости dbt-redshift теперь поддерживает допустимые значения для sslmode в psycopg2. Мы добавили логику преобразования, сопоставляющую каждое из значений sslmode, принимаемых psycopg2, с соответствующими параметрами ssl и sslmode в redshift_connector.

Таблица ниже подробно описывает принимаемые параметры sslmode и то, как будет установлено соединение в соответствии с каждым вариантом:

Параметр sslmodeОжидаемое поведение в dbt-redshiftДействия за кулисами
disableСоединение будет установлено без использования sslУстановить ssl = False
allowСоединение будет установлено с использованием verify-caУстановить ssl = True & sslmode = verify-ca
preferСоединение будет установлено с использованием verify-caУстановить ssl = True & sslmode = verify-ca
requireСоединение будет установлено с использованием verify-caУстановить ssl = True & sslmode = verify-ca
verify-caСоединение будет установлено с использованием verify-caУстановить ssl = True & sslmode = verify-ca
verify-fullСоединение будет установлено с использованием verify-fullУстановить ssl = True & sslmode = verify-full
Loading table...

При установлении соединения с использованием verify-ca, будет искать сертификат CA в ~/redshift-ca-bundle.crt.

Для получения более подробной информации об изменениях sslmode, наших дизайнерских решениях и обоснованиях — пожалуйста, обратитесь к PR, касающемуся этого изменения.

Параметр autocommit

Режим автокоммита полезен для выполнения команд, которые выполняются вне транзакции. Объекты соединения, используемые в Python, должны иметь autocommit = True для выполнения операций, таких как CREATE DATABASE и VACUUM. По умолчанию autocommit отключен в redshift_connector, но мы изменили это значение по умолчанию на True, чтобы гарантировать успешное выполнение определенных макросов в вашем проекте dbt.

Если необходимо, вы можете определить отдельную цель с autocommit=True, как показано ниже:

~/.dbt/profiles.yml
profile-to-my-RS-target:
target: dev
outputs:
dev:
type: redshift
...
autocommit: False


profile-to-my-RS-target-with-autocommit-enabled:
target: dev
outputs:
dev:
type: redshift
...
autocommit: True

Чтобы запустить определенные макросы с автокоммитом, загрузите профиль с автокоммитом, используя флаг --profile. Для получения дополнительной информации, пожалуйста, обратитесь к этому PR.

Устаревшие параметры profile в 1.5

  • iam_duration_seconds

  • keepalives_idle

Ключи sort и dist

Где это возможно, dbt позволяет использовать ключи sort и dist. См. раздел о специфических конфигурациях Redshift.

Повторные попытки

Если dbt-redshift сталкивается с операционной ошибкой или истечением времени ожидания при открытии нового соединения, он будет повторять попытку до количества раз, указанного в retries. Если установлено 2+ повторных попыток, dbt будет ждать 1 секунду перед повторной попыткой. Значение по умолчанию — 1 повторная попытка. Если установлено значение 0, dbt не будет повторять попытки вообще.

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

0
Loading