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

Настройка Teradata

Некоторая основная функциональность может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с исходным кодом в репозитории, указанном в следующем разделе.

Файл profiles.yml предназначен только для пользователей dbt Core

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

  • Поддерживается: Teradata
  • Авторы: Teradata
  • Репозиторий на GitHub: Teradata/dbt-teradata
  • Пакет на PyPI: dbt-teradata
  • Канал в Slack: #db-teradata
  • Поддерживаемая версия dbt Core: v0.21.0 и новее
  • Поддержка dbt Cloud: Supported
  • Минимальная версия платформы данных: n/a

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

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

Конфигурация dbt-teradata

Для конфигурации, специфичной для Teradata, пожалуйста, обратитесь к конфигурациям Teradata.

Совместимость с Python

Версия плагинаPython 3.9Python 3.10Python 3.11Python 3.12
1.0.0.x
1.1.x.x
1.2.x.x
1.3.x.x
1.4.x.x
1.5.x
1.6.x
1.7.x
1.8.x

Совместимость версий зависимых пакетов dbt

dbt-teradatadbt-coredbt-teradata-utildbt-util
1.2.x1.2.x0.1.00.9.x или ниже
1.6.71.6.71.1.11.1.1
1.7.x1.7.x1.1.11.1.1
1.8.x1.8.x1.1.11.1.1
1.8.x1.8.x1.2.01.2.0
1.8.x1.8.x1.3.01.3.0

Подключение к Teradata

Чтобы подключиться к Teradata Vantage из dbt, вам нужно добавить профиль в ваш файл profiles.yml. Профиль Teradata соответствует следующему синтаксису:

profiles.yml
<profile-name>:
target: <target-name>
outputs:
<target-name>:
type: teradata
user: <username>
password: <password>
schema: <database-name>
tmode: ANSI
threads: [optional, 1 or more]
#optional fields
<field-name: <field-value>

Описание полей профиля Teradata

Следующие поля являются обязательными:

ПараметрПо умолчаниюТипОписание
userстрокаУказывает имя пользователя базы данных. Эквивалентно параметру подключения USER драйвера Teradata JDBC.
passwordстрокаУказывает пароль базы данных. Эквивалентно параметру подключения PASSWORD драйвера Teradata JDBC.
schemaстрокаУказывает начальную базу данных для использования после входа, вместо базы данных по умолчанию для пользователя.
tmode"ANSI"строкаУказывает режим транзакции. В настоящее время поддерживается только режим ANSI.

Плагин также поддерживает следующие необязательные параметры подключения:

ПараметрПо умолчаниюТипОписание
accountстрокаУказывает учетную запись базы данных. Эквивалентно параметру подключения ACCOUNT драйвера Teradata JDBC.
browserстрокаУказывает команду для открытия браузера для аутентификации через браузер, когда logmech установлен в BROWSER. Аутентификация через браузер поддерживается для Windows и macOS. Эквивалентно параметру подключения BROWSER драйвера Teradata JDBC.
browser_tab_timeout"5"целое число в кавычкахУказывает количество секунд ожидания перед закрытием вкладки браузера после завершения аутентификации через браузер. По умолчанию 5 секунд. Поведение контролируется браузером, и не все браузеры поддерживают автоматическое закрытие вкладок.
browser_timeout"180"целое число в кавычкахУказывает количество секунд, в течение которых драйвер будет ждать завершения аутентификации через браузер. По умолчанию 180 секунд (3 минуты).
column_name"false"булево значение в кавычкахУправляет поведением элементов последовательности name курсора .description. Эквивалентно параметру подключения COLUMN_NAME драйвера Teradata JDBC. False указывает, что элемент name последовательности .description курсора предоставляет имя из AS-выражения, если оно доступно, или имя столбца, если оно доступно, или заголовок столбца. True указывает, что элемент name последовательности .description курсора предоставляет имя столбца, если оно доступно, но не влияет, когда поддержка пакета StatementInfo недоступна.
connect_failure_ttl"0"целое число в кавычкахУказывает время жизни в секундах для запоминания последнего сбоя подключения для каждой комбинации IP-адреса/порта. Драйвер затем пропускает попытки подключения к этому IP-адресу/порту на протяжении времени жизни. Значение по умолчанию — ноль, что отключает эту функцию. Рекомендуемое значение — половина времени перезапуска базы данных. Эквивалентно параметру подключения CONNECT_FAILURE_TTL драйвера Teradata JDBC.
connect_timeout"10000"целое число в кавычкахУказывает тайм-аут в миллисекундах для установления TCP-соединения. Укажите 0 для отсутствия тайм-аута. По умолчанию 10 секунд (10000 миллисекунд).
cop"true"булево значение в кавычкахУказывает, выполняется ли обнаружение COP. Эквивалентно параметру подключения COP драйвера Teradata JDBC.
coplast"false"булево значение в кавычкахУказывает, как обнаружение COP определяет последнее имя хоста COP. Эквивалентно параметру подключения COPLAST драйвера Teradata JDBC. Когда coplast равно false или опущено, или обнаружение COP отключено, то DNS-запрос для имени хоста coplast не выполняется. Когда coplast равно true, и обнаружение COP включено, то DNS-запрос для имени хоста coplast выполняется.
port"1025"целое число в кавычкахУказывает номер порта базы данных. Эквивалентно параметру подключения DBS_PORT драйвера Teradata JDBC.
encryptdata"false"булево значение в кавычкахУправляет шифрованием данных, обмениваемых между драйвером и базой данных. Эквивалентно параметру подключения ENCRYPTDATA драйвера Teradata JDBC.
fake_result_sets"false"булево значение в кавычкахУправляет тем, предшествует ли фальшивый набор результатов, содержащий метаданные запроса, каждому реальному набору результатов.
field_quote"\""строкаУказывает строку из одного символа, используемую для заключения полей в кавычки в CSV-файле.
field_sep","строкаУказывает строку из одного символа, используемую для разделения полей в CSV-файле. Эквивалентно параметру подключения FIELD_SEP драйвера Teradata JDBC.
hostстрокаУказывает имя хоста базы данных.
https_port"443"целое число в кавычкахУказывает номер порта базы данных для HTTPS/TLS-соединений. Эквивалентно параметру подключения HTTPS_PORT драйвера Teradata JDBC.
lob_support"true"булево значение в кавычкахУправляет поддержкой LOB. Эквивалентно параметру подключения LOB_SUPPORT драйвера Teradata JDBC.
log"0"целое число в кавычкахУправляет ведением отладочных журналов. В некоторой степени эквивалентно параметру подключения LOG драйвера Teradata JDBC. Поведение этого параметра может измениться в будущем. Значение этого параметра в настоящее время определяется как целое число, в котором 1-бит управляет трассировкой функций и методов, 2-бит управляет ведением отладочных журналов, 4-бит управляет дампами шестнадцатеричных сообщений отправки и получения, а 8-бит управляет временем. Составьте значение, сложив 1, 2, 4 и/или 8.
logdataстрокаУказывает дополнительные данные для выбранного метода аутентификации при входе. Эквивалентно параметру подключения LOGDATA драйвера Teradata JDBC.
logon_timeout"0"целое число в кавычкахУказывает тайм-аут входа в секундах. Ноль означает отсутствие тайм-аута.
logmech"TD2"строкаУказывает метод аутентификации при входе. Эквивалентно параметру подключения LOGMECH драйвера Teradata JDBC. Возможные значения: TD2 (по умолчанию), JWT, LDAP, KRB5 для Kerberos или TDNEGO.
max_message_body"2097000"целое число в кавычкахУказывает максимальный размер сообщения ответа в байтах. Эквивалентно параметру подключения MAX_MESSAGE_BODY драйвера Teradata JDBC.
partition"DBC/SQL"строкаУказывает раздел базы данных. Эквивалентно параметру подключения PARTITION драйвера Teradata JDBC.
request_timeout"0"целое число в кавычкахУказывает тайм-аут для выполнения каждого SQL-запроса. Ноль означает отсутствие тайм-аута.
retries0целое числоПозволяет адаптеру автоматически повторять попытку, когда попытка открыть новое соединение с базой данных приводит к временной, редкой ошибке. Эта опция может быть установлена с помощью конфигурации retries. Значение по умолчанию — 0. Период ожидания между попытками подключения по умолчанию составляет одну секунду. Опция retry_timeout (в секундах) позволяет нам настроить этот период ожидания.
runstartup"false"булево значение в кавычкахУправляет тем, выполняется ли запрос SQL STARTUP пользователя после входа. Для получения дополнительной информации обратитесь к запросу SQL STARTUP пользователя. Эквивалентно параметру подключения RUNSTARTUP драйвера Teradata JDBC. Если retries установлено на 3, адаптер попытается установить новое соединение три раза, если произойдет ошибка.
sessionsцелое число в кавычкахУказывает количество соединений для передачи данных для FastLoad или FastExport. Значение по умолчанию (рекомендуемое) позволяет базе данных выбрать соответствующее количество соединений. Эквивалентно параметру подключения SESSIONS драйвера Teradata JDBC.
sip_support"true"булево значение в кавычкахУправляет использованием пакета StatementInfo. Эквивалентно параметру подключения SIP_SUPPORT драйвера Teradata JDBC.
sp_spl"true"булево значение в кавычкахУправляет тем, сохраняется ли исходный код хранимой процедуры в базе данных при создании SQL-хранимой процедуры. Эквивалентно параметру подключения SP_SPL драйвера Teradata JDBC.
sslcaстрокаУказывает имя файла PEM, содержащего сертификаты Центра сертификации (CA) для использования с значениями sslmode VERIFY-CA или VERIFY-FULL. Эквивалентно параметру подключения SSLCA драйвера Teradata JDBC.
sslcrc"ALLOW"строкаЭквивалентно параметру подключения SSLCRC драйвера Teradata JDBC. Значения нечувствительны к регистру.
• ALLOW обеспечивает поведение "мягкого отказа", при котором ошибки связи игнорируются во время проверки отзыва сертификата.
• REQUIRE требует, чтобы проверка отзыва сертификата была успешной.
sslcapathстрокаУказывает каталог файлов PEM, содержащих сертификаты Центра сертификации (CA) для использования с значениями sslmode VERIFY-CA или VERIFY-FULL. Используются только файлы с расширением .pem. Другие файлы в указанном каталоге не используются. Эквивалентно параметру подключения SSLCAPATH драйвера Teradata JDBC.
sslcipherстрокаУказывает шифр TLS для HTTPS/TLS-соединений. Эквивалентно параметру подключения SSLCIPHER драйвера Teradata JDBC.
sslmode"PREFER"строкаУказывает режим для соединений с базой данных. Эквивалентно параметру подключения SSLMODE драйвера Teradata JDBC.
DISABLE отключает HTTPS/TLS-соединения и использует только не-TLS-соединения.
ALLOW использует не-TLS-соединения, если только база данных не требует HTTPS/TLS-соединений.
PREFER использует HTTPS/TLS-соединения, если только база данных не предлагает HTTPS/TLS-соединения.
REQUIRE использует только HTTPS/TLS-соединения.
VERIFY-CA использует только HTTPS/TLS-соединения и проверяет, что сертификат сервера действителен и доверен.
VERIFY-FULL использует только HTTPS/TLS-соединения, проверяет, что сертификат сервера действителен и доверен, и проверяет, что сертификат сервера соответствует имени хоста базы данных.
sslprotocol"TLSv1.2"строкаУказывает протокол TLS для HTTPS/TLS-соединений. Эквивалентно параметру подключения SSLPROTOCOL драйвера Teradata JDBC.
teradata_values"true"булево значение в кавычкахУправляет тем, используется ли str или более специфичный тип данных Python для определенных типов значений столбцов набора результатов.
query_band"org=teradata-internal-telem;appname=dbt;"строкаУказывает строку Query Band, которая будет установлена для каждого SQL-запроса.

Обратитесь к параметрам подключения для полного описания параметров подключения.

Поддерживаемые функции

Материализации

  • view
  • table
  • ephemeral
  • incremental

Инкрементальная материализация

Поддерживаются следующие стратегии инкрементальной материализации:

  • append (по умолчанию)
  • delete+insert
  • merge
  • valid_history (ранний доступ)
к сведению

Команды

Все команды dbt поддерживаются.

Поддержка контрактов моделей

Контракты моделей поддерживаются с dbt-teradata версии 1.7.1 и выше. Поддержка и применение ограничений в dbt-teradata:

Тип ограниченияПоддержка ПлатформаПрименение
not_null✅ Поддерживается✅ Применяется
primary_key✅ Поддерживается✅ Применяется
foreign_key✅ Поддерживается✅ Применяется
unique✅ Поддерживается✅ Применяется
check✅ Поддерживается✅ Применяется

Обратитесь к Контрактам моделей для получения дополнительной информации.

Поддержка пакета dbt-utils

Пакет dbt-utils поддерживается через пакет dbt teradata/teradata_utils. Пакет предоставляет слой совместимости между dbt_utils и dbt-teradata. См. пакет teradata_utils для инструкций по установке.

Кросс-базовые макросы

Начиная с версии 1.3, некоторые макросы были перенесены из пакета dbt teradata-dbt-utils в коннектор. Обратитесь к следующей таблице для макросов, поддерживаемых коннектором.

Для использования кросс-базовых макросов пространство имен макросов teradata-utils не будет использоваться, так как кросс-базовые макросы были перенесены из teradata-utils в Dbt-Teradata.

Совместимость

Группа макросовНазвание макросаСтатусКомментарий
Кросс-базовые макросыcurrent_timestampпредоставлен пользовательский макрос
Кросс-базовые макросыdateaddпредоставлен пользовательский макрос
Кросс-базовые макросыdatediffпредоставлен пользовательский макрос, см. заметку о совместимости
Кросс-базовые макросыsplit_partпредоставлен пользовательский макрос
Кросс-базовые макросыdate_truncпредоставлен пользовательский макрос
Кросс-базовые макросыhashпредоставлен пользовательский макрос, см. заметку о совместимости
Кросс-базовые макросыreplaceпредоставлен пользовательский макрос
Кросс-базовые макросыtype_stringпредоставлен пользовательский макрос
Кросс-базовые макросыlast_dayне требуется настройка, см. заметку о совместимости
Кросс-базовые макросыwidth_bucketне требуется настройка
Кросс-базовые макросыgenerate_seriesпредоставлен пользовательский макрос
Кросс-базовые макросыdate_spineне требуется настройка

Примеры для кросс-базовых макросов

replace

{{ dbt.replace("string_text_column", "old_chars", "new_chars") }} {{ replace('abcgef', 'g', 'd') }}

date_trunc

{{ dbt.date_trunc("date_part", "date") }} {{ dbt.date_trunc("DD", "'2018-01-05 12:00:00'") }}

datediff

Макрос datediff в teradata поддерживает разницу между датами. Разница между временными метками не поддерживается.

hash

Макрос Hash требует реализации функции md5. Teradata не поддерживает md5 нативно. Вам нужно установить пользовательскую функцию (UDF):

  1. Скачайте реализацию UDF md5 с сайта Teradata (требуется регистрация): https://downloads.teradata.com/download/extensibility/md5-message-digest-udf.
  2. Распакуйте пакет и перейдите в каталог src.
  3. Запустите bteq и подключитесь к вашей базе данных.
  4. Создайте базу данных GLOBAL_FUNCTIONS, которая будет содержать UDF. Вы не можете изменить имя базы данных, так как оно жестко закодировано в макросе:
    CREATE DATABASE GLOBAL_FUNCTIONS AS PERMANENT = 60e6, SPOOL = 120e6;
  5. Создайте UDF. Замените <CURRENT_USER> на вашего текущего пользователя базы данных:
    GRANT CREATE FUNCTION ON GLOBAL_FUNCTIONS TO <CURRENT_USER>;
    DATABASE GLOBAL_FUNCTIONS;
    .run file = hash_md5.btq
  6. Предоставьте разрешения на выполнение UDF с опцией предоставления.
    GRANT EXECUTE FUNCTION ON GLOBAL_FUNCTIONS TO PUBLIC WITH GRANT OPTION;
last_day

last_day в teradata_utils, в отличие от соответствующего макроса в dbt_utils, не поддерживает quarter в качестве части даты.

Ограничения

Режим транзакции

Теперь в dbt-teradata поддерживаются оба режима: ANSI и TERA. Поддержка режима TERA была введена в dbt-teradata версии 1.7.1, это начальная реализация.

Режим транзакции TERA

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

Благодарности

Адаптер был изначально создан Дугом Битти. Teradata взяла на себя адаптер в январе 2022 года. Мы благодарны Дугу за создание проекта и ускорение интеграции dbt + Teradata.

Лицензия

Адаптер опубликован под лицензией Apache-2.0. Обратитесь к условиям и положениям, чтобы понять такие моменты, как создание производных работ и модель поддержки.

0