Настройка Postgres
profiles.yml
предназначен только для пользователей dbt CoreЕсли вы используете dbt Cloud, вам не нужно создавать файл profiles.yml
. Этот файл предназначен только для пользователей dbt Core. Чтобы подключить вашу платформу данных к dbt Cloud, обратитесь к разделу О платформах данных.
- Поддерживается: dbt Labs
- Авторы: core dbt maintainers
- Репозиторий на GitHub: dbt-labs/dbt-postgres
- Пакет на PyPI:
dbt-postgres
- Канал в Slack: #db-postgres
- Поддерживаемая версия dbt Core: v0.4.0 и новее
- Поддержка dbt Cloud: Supported
- Минимальная версия платформы данных: n/a
Установка dbt-postgres
Используйте pip
для установки адаптера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core
и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core
. Это связано с тем, что адаптеры и версии dbt Core были разделены, и мы больше не хотим перезаписывать существующие установки dbt-core.
Используйте следующую команду для установки:
Конфигурация dbt-postgres
Для конфигурации, специфичной для Postgres, пожалуйста, обратитесь к конфигурациям Postgres.
Конфигурация профиля
Цели Postgres должны быть настроены с использованием следующей конфигурации в вашем файле profiles.yml
.
company-name:
target: dev
outputs:
dev:
type: postgres
host: [hostname]
user: [username]
password: [password]
port: [port]
dbname: [database name] # или database вместо dbname
schema: [dbt schema]
threads: [optional, 1 или более]
keepalives_idle: 0 # по умолчанию 0, что означает системное значени е по умолчанию. См. ниже
connect_timeout: 10 # по умолчанию 10 секунд
retries: 1 # по умолчанию 1 повтор при ошибке/тайм-ауте при открытии соединений
search_path: [optional, переопределить путь поиска postgres по умолчанию]
role: [optional, установить роль, которую dbt принимает при выполнении запросов]
sslmode: [optional, установить sslmode, используемый для подключения к базе данных]
sslcert: [optional, установить sslcert для управления местоположением файла сертификата]
sslkey: [optional, установить sslkey для управления местоположением закрытого ключа]
sslrootcert: [optional, установить значение конфигурации sslrootcert на новый путь к файлу, чтобы настроить местоположение файла, содержащего корневые сертификаты]
Конфигурации
search_path
Конфигурация search_path
управляет "путем поиска" Postgres, который dbt настраивает при открытии новых соединений с базой данных. По умолчанию путь поиска Postgres — "$user, public"
, что означает, что неуточненные имена будут искаться в схеме public
или в схеме с тем же именем, что и у вошедшего пользователя. Примечание: Установка search_path
на пользовательское значение не является необходимой или рекомендуемой для типичного использования dbt.
role
Конфигурация role
управляет ролью Postgres, которую dbt принимает при открытии новых соединений с базой данных.
sslmode
Конфигурация sslmode
управляет тем, как dbt подключается к базам данных Postgres с использованием SSL. См. документацию Postgres о sslmode
для получения информации о использовании. Если не установлено, dbt будет подключаться к базам данных, используя значение по умолчанию Postgres, prefer
, в качестве sslmode
.
sslcert
Конфигурация sslcert
управляет местоположением файла сертификата, используемого для подключения к Postgres при использовании клиентских SSL-соединений. Чтобы использовать файл сертификата, который не находится в местоположении по умолчанию, установите путь к этому файлу, используя это значение. Без этой конфигурации dbt использует местоположения по умолчанию Postgres. См. Клиентские сертификаты в документации Postgres SSL для путей по умолчанию.
sslkey
Конфигурация sslkey
управляет местоположением закрытого ключа для подключения к Postgres с использованием клиентских SSL-соединений. Если эта конфигурация не указана, dbt использует местоположение ключа по умолчанию для Postgres. См. Клиентские сертификаты в документации Postgres SSL для местоположений по умолчанию.
sslrootcert
При подключении к серверу Postgres с использованием клиентского SSL-соединения dbt проверяет, что сервер предоставляет SSL-сертификат, подписанный доверенным корневым сертификатом. Эти корневые сертификаты по умолчанию находятся в файле ~/.postgresql/root.crt
. Чтобы настроить местоположение этого файла, установите значение конфигурации sslrootcert
на новый путь к файлу.
keepalives_idle
Если база данных закрывает соединение, пока dbt ожидает данные, вы можете увидеть ошибку SSL SYSCALL error: EOF detected
. Уменьшение значения keepalives_idle
может предотвратить это, так как сервер будет чаще отправлять пинг, чтобы поддерживать активное соединение.
Настройка по умолчанию в dbt — 0 (значение по умолчанию для сервера), но может быть настроена на более низкое значение (возможно, 120 или 60 секунд), за счет более частого сетевого обмена.
retries
Если dbt-postgres
сталкивается с операционной ошибкой или тайм-аутом при открытии нового соединения, он будет повторять попытку до количества раз, указанного в retries
. Значение по умолчанию — 1 повтор. Если установлено 2+ повторов, dbt будет ждать 1 секунду перед повторной попыткой. Если установлено 0, dbt не будет повторять попытки вообще.
psycopg2
vs psycopg2-binary
psycopg2-binary
устанавливается по умолчанию при установке dbt-postgres
.
Установка psycopg2-binary
использует предварительно собранную версию psycopg2
, которая может быть не оптимизирована для вашей конкретной машины.
Это идеально для рабочих процессов разработки и тестирования, где производительность менее важна, а скорость и простота установки более важны.
Однако, производственные среды выиграют от версии psycopg2
, которая собрана из исходного кода для вашей конкретной операционной системы и архитектуры. В этом случае скорость и простота установки менее важны, так как акцент делается на постоянное использование.
Установка psycopg2
часто требует зависимостей на уровне ОС.
Эти зависимости могут варьироваться в зависимости от операционных систем и архитектур.
Например, на Ubuntu вам нужно установить libpq-dev
и python-dev
:
sudo apt-get update
sudo apt-get install libpq-dev python-dev
тогда как на Mac вам нужно установить postgresql
:
brew install postgresql
pip install psycopg2
Ваша ОС может иметь свои собственные зависимости в зависимости от вашей конкретной ситуации.