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

Настройка 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.

~/.dbt/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

Ваша ОС может иметь свои собственные зависимости в зависимости от вашей конкретной ситуации.

0