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

Настройка Redshift

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

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

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

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

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

Конфигурация dbt-redshift

Для конфигурации, специфичной для Redshift, пожалуйста, обратитесь к конфигурациям Redshift.

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

Поле профиляПримерОписание
typeredshiftТип хранилища данных, к которому вы подключаетесь
hosthostname.region.redshift.amazonaws.com или workgroup.account.region.redshift-serverless.amazonaws.comХост кластера
port5439
dbnamemy_dbИмя базы данных
schemamy_schemaИмя схемы
connect_timeout30Количество секунд до истечения времени ожидания подключения. По умолчанию None
sslmodepreferнеобязательно, установите sslmode для подключения к базе данных. По умолчанию prefer, который будет использовать 'verify-ca' для подключения. Для получения дополнительной информации о sslmode см. примечание о Redshift ниже
roleNoneНеобязательно, идентификатор пользователя текущей сессии
autocreatefalseНеобязательно, по умолчанию false. Создает пользователя, если он не существует
db_groups['ANALYSTS']Необязательно. Список существующих имен групп базы данных, к которым DbUser присоединяется для текущей сессии
ra3_nodetrueНеобязательно, по умолчанию False. Включает источники из разных баз данных
autocommittrueНеобязательно, по умолчанию True. Включает автокоммит после каждого оператора
retries1Количество повторных попыток

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

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

  • Database — Аутентификация на основе пароля (по умолчанию, будет использоваться, если method не указан)
  • IAM User — Аутентификация пользователя IAM через AWS Profile

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

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

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

Пример 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

При установлении соединения с использованием 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