Настройка 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.
Конфигурации
| Loading table... |
Для настройки параметров tcp_keepalive рекомендуем ознакомиться с документацией Redshift, чтобы подобрать конфигурацию, оптимально подходящую для вашего случая.
Параметры аутентификации
Методы аутентификации, которые поддерживает dbt Core на Redshift, включают:
Методы аутентификации, которые dbt Core поддерживает для Redshift:
Нажмите на один из этих методов аутентификации для получения более подробной информации о том, как настроить ваш профиль подключения. Каждая вкладка также включает пример конфигурационного файла profiles.yml для вашего ознакомления.
- Database
- IAM User via AWS Profile (Core)
Следующая таблица содержит параметры для метода подключения на основе базы данных (пароль).
| Loading table... |
Пример 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
Следующая таблица перечисляет параметры аутентификации для использования аутентификации IAM.
Чтобы настроить профиль Redshift с использованием аутентификации IAM, установите параметр method в iam, как показано ниже. Обратите внимание, что пароль не требуется при использовании аутентификации IAM. Для получения дополнительной информации об этом типе аутентификации обратитесь к документации Redshift и документации boto3 о генерации учетных данных пользователя с помощью IAM Auth.
Если вы получаете ошибку "You must specify a region" при использовании аутентификации IAM, вероятно, ваши учетные данные AWS настроены неправильно. Попробуйте запустить aws configure, чтобы настроить ключи доступа AWS, и выберите регион по умолчанию. Если у вас есть вопросы, пожалуйста, обратитесь к официальной документации AWS о настройках конфигурации и файлов учетных данных.
| Loading table... |
Пример profiles.yml для IAM
my-redshift-db:
target: dev
outputs:
dev:
type: redshift
method: iam
cluster_id: CLUSTER_ID
host: hostname.region.redshift.amazonaws.com
user: alice
iam_profile: analyst
region: us-east-1
dbname: analytics
schema: analytics
port: 5439
# Необязательные конфигурации Redshift:
threads: 4
connect_timeout: None
retries: 1
role: None
sslmode: prefer
ra3_node: true
autocommit: true
autocreate: true
db_groups: ['ANALYSTS']
Указание профиля IAM
Когда установлена конфигурация iam_profile, dbt будет использовать указанный профиль из вашего файла ~/.aws/config вместо использования имени профиля default.
Примечания к 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 и то, как будет установлено соединение в соответствии с каждым вариантом:
| 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, как показано ниже:
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 не будет повторять попытки вообще.