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

Подключение Postgres к dbt v1

Файл profiles.yml нужен только для dbt v1 и dbt v2

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

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

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

Установите адаптер с помощью `pip`: python -m pip install 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: [необязательно, 1 или больше]
keepalives_idle: 0 # по умолчанию 0, что означает использование системного значения по умолчанию. См. ниже
connect_timeout: 10 # по умолчанию 10 секунд
retries: 1 # по умолчанию 1 повторная попытка при ошибке или тайм-ауте во время открытия соединений
search_path: [необязательно, переопределяет значение search_path по умолчанию в postgres]
role: [необязательно, задаёт роль, которую dbt принимает при выполнении запросов]
sslmode: [необязательно, задаёт режим sslmode для подключения к базе данных]
sslcert: [необязательно, задаёт значение sslcert для указания расположения файла сертификата]
sslkey: [необязательно, задаёт значение sslkey для указания расположения закрытого ключа]
sslrootcert: [необязательно, задаёт новый путь к файлу в параметре 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 и psycopg2-binary​

При установке dbt-postgres по умолчанию устанавливается psycopg2-binary. При установке psycopg2-binary используется предварительно собранная версия psycopg2, которая может быть не оптимизирована для вашего компьютера. Этот вариант идеально подходит для разработки и тестирования, где производительность менее важна, чем скорость и простота установки. Однако в производственных средах предпочтительнее использовать версию 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