Настройка 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.9 | Python 3.10 | Python 3.11 | Python 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-teradata | dbt-core | dbt-teradata-util | dbt-util |
---|---|---|---|
1.2.x | 1.2.x | 0.1.0 | 0.9.x или ниже |
1.6.7 | 1.6.7 | 1.1.1 | 1.1.1 |
1.7.x | 1.7.x | 1.1.1 | 1.1.1 |
1.8.x | 1.8.x | 1.1.1 | 1.1.1 |
1.8.x | 1.8.x | 1.2.0 | 1.2.0 |
1.8.x | 1.8.x | 1.3.0 | 1.3.0 |
Подключение к Teradata
Чтобы подключиться к Teradata Vantage из dbt, вам нужно добавить профиль в ваш файл profiles.yml
. Профиль Teradata соответствует следующему синтаксису:
<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-запроса. Ноль означает отсутствие тайм-аута. |
retries | 0 | целое число | Позволяет адаптеру автоматически повторять попытку, когда попытка открыть новое соединение с базой данных приводит к временной, редкой ошибке. Эта опция может быть установлена с помощью конфигурации 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.
- Чтобы узнать больше о стратегии инкрементальной материализации
valid_history
, обратитесь к конфигурациям Teradata.
Команды
Все команды 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):
- Скачайте реализацию UDF md5 с сайта Teradata (требуется регистрация): https://downloads.teradata.com/download/extensibility/md5-message-digest-udf.
- Распакуйте пакет и перейдите в каталог
src
. - Запустите
bteq
и подключитесь к вашей базе данных. - Создайте базу данных
GLOBAL_FUNCTIONS
, которая будет содержать UDF. Вы не можете изменить имя базы данных, так как оно жестко закодировано в макросе:CREATE DATABASE GLOBAL_FUNCTIONS AS PERMANENT = 60e6, SPOOL = 120e6;
- Создайте UDF. Замените
<CURRENT_USER>
на вашего текущего пользователя базы данных:GRANT CREATE FUNCTION ON GLOBAL_FUNCTIONS TO <CURRENT_USER>;
DATABASE GLOBAL_FUNCTIONS;
.run file = hash_md5.btq - Предоставьте разрешения на выполнение 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 и она может не поддерживать некоторые случаи использования. Мы настоятельно рекомендуе м проверять все записи или преобразования, используя этот режим, чтобы избежать неожиданных проблем или ошибок.
Благодарности
Адаптер был изначально создан Дугом Битти. Teradata взяла на себя адаптер в январе 2022 года. Мы благодарны Дугу за создание проекта и ускорение интеграции dbt + Teradata.
Лицензия
Адаптер опубликован под лицензией Apache-2.0. Обратитесь к условиям и положениям, чтобы понять такие моменты, как создание производных работ и модель поддержки.