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

Настройка Postgres

Файл 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-postgres
  • Канал в Slack: #db-postgres
  • Поддерживаемая версия dbt Core: v0.4.0 и новее
  • Поддержка dbt: Supported
  • Минимальная версия платформы данных: n/a

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

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

python -m pip install dbt-core dbt-postgres

Настройка 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", что означает, что неуточненные имена table будут искаться в схеме 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, которая может быть не оптимизирована под конкретную машину.

Это идеально подходит для процессов разработки и тестирования, где производительность менее критична, а скорость и простота установки важнее.

Однако для production‑окружений будет полезнее версия psycopg2, собранная из исходного кода под конкретную операционную систему и архитектуру. В таком сценарии скорость и простота установки отходят на второй план, поскольку основной фокус делается на длительной и стабильной эксплуатации.

Чтобы использовать psycopg2:

  1. Установите dbt-postgres
  2. Удалите psycopg2-binary
  3. Установите эквивалентную версию psycopg2
pip install dbt-postgres
if [[ $(pip show psycopg2-binary) ]]; then
PSYCOPG2_VERSION=$(pip show psycopg2-binary | grep Version | cut -d " " -f 2)
pip uninstall -y psycopg2-binary && pip install psycopg2==$PSYCOPG2_VERSION
fi

Установка 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
Loading