Some core functionality may be limited. If you're interested in contributing, check out the source code in the repository listed in the next section.
profiles.yml file is for dbt Core and dbt fusion only
If you're using dbt platform, you don't need to create a profiles.yml file. This file is only necessary when you use dbt Core or dbt Fusion locally. To learn more about Fusion prerequisites, refer to Supported features. To connect your data platform to dbt, refer to About data platforms.
Use pip to install the adapter. Before 1.8, installing the adapter would automatically install dbt-core and any additional dependencies. Beginning in 1.8, installing an adapter does not automatically install dbt-core. This is because adapters and dbt Core versions have been decoupled from each other so we no longer want to overwrite existing dbt-core installations.
Use the following command for installation:
python -m pip install dbt-core dbt-teradata
Configuring dbt-teradata
For Teradata-specific configuration, please refer to Teradata configs.
Specifies the database username. Equivalent to the Teradata JDBC Driver USER connection parameter.
password
string
Specifies the database password. Equivalent to the Teradata JDBC Driver PASSWORD connection parameter.
schema
string
Specifies the initial database to use after logon, instead of the user's default database.
tmode
"ANSI"
string
Specifies the transaction mode. Only ANSI mode is currently supported.
Loading table...
The plugin also supports the following optional connection parameters:
Parameter
Default
Type
Description
account
string
Specifies the database account. Equivalent to the Teradata JDBC Driver ACCOUNT connection parameter.
browser
string
Specifies the command to open the browser for Browser Authentication, when logmech is BROWSER. Browser Authentication is supported for Windows and macOS. Equivalent to the Teradata JDBC Driver BROWSER connection parameter.
browser_tab_timeout
"5"
quoted integer
Specifies the number of seconds to wait before closing the browser tab after Browser Authentication is completed. The default is 5 seconds. The behavior is under the browser's control, and not all browsers support automatic closing of browser tabs.
browser_timeout
"180"
quoted integer
Specifies the number of seconds that the driver will wait for Browser Authentication to complete. The default is 180 seconds (3 minutes).
column_name
"false"
quoted boolean
Controls the behavior of cursor .description sequence name items. Equivalent to the Teradata JDBC Driver COLUMN_NAME connection parameter. False specifies that a cursor .description sequence name item provides the AS-clause name if available, or the column name if available, or the column title. True specifies that a cursor .description sequence name item provides the column name if available, but has no effect when StatementInfo parcel support is unavailable.
connect_timeout
"10000"
quoted integer
Specifies the timeout in milliseconds for establishing a TCP socket connection. Specify 0 for no timeout. The default is 10 seconds (10000 milliseconds).
cop
"true"
quoted boolean
Specifies whether COP Discovery is performed. Equivalent to the Teradata JDBC Driver COP connection parameter.
coplast
"false"
quoted boolean
Specifies how COP Discovery determines the last COP hostname. Equivalent to the Teradata JDBC Driver COPLAST connection parameter. When coplast is false or omitted, or COP Discovery is turned off, then no DNS lookup occurs for the coplast hostname. When coplast is true, and COP Discovery is turned on, then a DNS lookup occurs for a coplast hostname.
port
"1025"
quoted integer
Specifies the database port number. Equivalent to the Teradata JDBC Driver DBS_PORT connection parameter.
encryptdata
"false"
quoted boolean
Controls encryption of data exchanged between the driver and the database. Equivalent to the Teradata JDBC Driver ENCRYPTDATA connection parameter.
fake_result_sets
"false"
quoted boolean
Controls whether a fake result set containing statement metadata precedes each real result set.
field_quote
"\""
string
Specifies a single character string used to quote fields in a CSV file.
field_sep
","
string
Specifies a single character string used to separate fields in a CSV file. Equivalent to the Teradata JDBC Driver FIELD_SEP connection parameter.
host
string
Specifies the database hostname.
https_port
"443"
quoted integer
Specifies the database port number for HTTPS/TLS connections. Equivalent to the Teradata JDBC Driver HTTPS_PORT connection parameter.
lob_support
"true"
quoted boolean
Controls LOB support. Equivalent to the Teradata JDBC Driver LOB_SUPPORT connection parameter.
log
"0"
quoted integer
Controls debug logging. Somewhat equivalent to the Teradata JDBC Driver LOG connection parameter. This parameter's behavior is subject to change in the future. This parameter's value is currently defined as an integer in which the 1-bit governs function and method tracing, the 2-bit governs debug logging, the 4-bit governs transmit and receive message hex dumps, and the 8-bit governs timing. Compose the value by adding together 1, 2, 4, and/or 8.
logdata
string
Specifies extra data for the chosen logon authentication method. Equivalent to the Teradata JDBC Driver LOGDATA connection parameter.
logon_timeout
"0"
quoted integer
Specifies the logon timeout in seconds. Zero means no timeout.
logmech
"TD2"
string
Specifies the logon authentication method. Equivalent to the Teradata JDBC Driver LOGMECH connection parameter. Possible values are TD2 (the default), JWT, LDAP, BROWSER, KRB5 for Kerberos, or TDNEGO.
max_message_body
"2097000"
quoted integer
Specifies the maximum Response Message size in bytes. Equivalent to the Teradata JDBC Driver MAX_MESSAGE_BODY connection parameter.
partition
"DBC/SQL"
string
Specifies the database partition. Equivalent to the Teradata JDBC Driver PARTITION connection parameter.
request_timeout
"0"
quoted integer
Specifies the timeout for executing each SQL request. Zero means no timeout.
retries
0
integer
Allows an adapter to automatically try again when the attempt to open a new connection on the database has a transient, infrequent error. This option can be set using the retries configuration. Default value is 0. The default wait period between connection attempts is one second. retry_timeout (seconds) option allows us to adjust this waiting period.
runstartup
"false"
quoted boolean
Controls whether the user's STARTUP SQL request is executed after logon. For more information, refer to User STARTUP SQL Request. Equivalent to the Teradata JDBC Driver RUNSTARTUP connection parameter. If retries is set to 3, the adapter will try to establish a new connection three times if an error occurs.
sessions
quoted integer
Specifies the number of data transfer connections for FastLoad or FastExport. The default (recommended) lets the database choose the appropriate number of connections. Equivalent to the Teradata JDBC Driver SESSIONS connection parameter.
sip_support
"true"
quoted boolean
Controls whether StatementInfo parcel is used. Equivalent to the Teradata JDBC Driver SIP_SUPPORT connection parameter.
sp_spl
"true"
quoted boolean
Controls whether stored procedure source code is saved in the database when a SQL stored procedure is created. Equivalent to the Teradata JDBC Driver SP_SPL connection parameter.
sslca
string
Specifies the file name of a PEM file that contains Certificate Authority (CA) certificates for use with sslmode values VERIFY-CA or VERIFY-FULL. Equivalent to the Teradata JDBC Driver SSLCA connection parameter.
sslcrc
"ALLOW"
string
Equivalent to the Teradata JDBC Driver SSLCRC connection parameter. Values are case-insensitive. • ALLOW provides "soft fail" behavior such that communication failures are ignored during certificate revocation checking. • REQUIRE mandates that certificate revocation checking must succeed.
sslcapath
string
Specifies a directory of PEM files that contain Certificate Authority (CA) certificates for use with sslmode values VERIFY-CA or VERIFY-FULL. Only files with an extension of .pem are used. Other files in the specified directory are not used. Equivalent to the Teradata JDBC Driver SSLCAPATH connection parameter.
sslcipher
string
Specifies the TLS cipher for HTTPS/TLS connections. Equivalent to the Teradata JDBC Driver SSLCIPHER connection parameter.
sslmode
"PREFER"
string
Specifies the mode for connections to the database. Equivalent to the Teradata JDBC Driver SSLMODE connection parameter. • DISABLE disables HTTPS/TLS connections and uses only non-TLS connections. • ALLOW uses non-TLS connections unless the database requires HTTPS/TLS connections. • PREFER uses HTTPS/TLS connections unless the database does not offer HTTPS/TLS connections. • REQUIRE uses only HTTPS/TLS connections. • VERIFY-CA uses only HTTPS/TLS connections and verifies that the server certificate is valid and trusted. • VERIFY-FULL uses only HTTPS/TLS connections, verifies that the server certificate is valid and trusted, and verifies that the server certificate matches the database hostname.
sslprotocol
"TLSv1.2"
string
Specifies the TLS protocol for HTTPS/TLS connections. Equivalent to the Teradata JDBC Driver SSLPROTOCOL connection parameter.
teradata_values
"true"
quoted boolean
Controls whether str or a more specific Python data type is used for certain result set column value types.
query_band
"org=teradata-internal-telem;appname=dbt;"
string
Specifies the Query Band string to be set for each SQL request.
Loading table...
Refer to connection parameters for the full description of the connection parameters.
dbt-utils package is supported through teradata/teradata_utils dbt package. The package provides a compatibility layer between dbt_utils and dbt-teradata. See teradata_utils package for install instructions.
Starting with release 1.3, some macros were migrated from teradata-dbt-utils dbt package to the connector. Refer the following table for the macros supported by the connector.
For using cross-DB macros, teradata-utils as a macro namespace will not be used, as cross-DB macros have been migrated from teradata-utils to Dbt-Teradata.
Hash macro needs an md5 function implementation. Teradata doesn't support md5 natively. You need to install a User Defined Function (UDF) and optionally specify md5_udfvariable.
If not specified the code defaults to using GLOBAL_FUNCTIONS.hash_md5. See the following instructions on how to install the custom UDF:
last_day in teradata_utils, unlike the corresponding macro in dbt_utils, doesn't support quarter datepart.
dbt-teradata 1.8.0 and later versions support unit tests, enabling you to validate SQL models and logic with a small set of static inputs before going to production. This feature enhances test-driven development and boosts developer efficiency and code reliability. Learn more about dbt unit tests here.
When running a dbt job with logmech set to "browser", the initial authentication opens a browser window where you must enter your username and password.
After authentication, this window remains open, requiring you to manually switch back to the dbt console.
For every subsequent connection, a new browser tab briefly opens, displaying the message "TERADATA BROWSER AUTHENTICATION COMPLETED," and silently reuses the existing session.
However, the focus stays on the browser window, so you’ll need to manually switch back to the dbt console each time.
This behavior is the default functionality of the teradatasql driver and cannot be avoided at this time.
To prevent session expiration and the need to re-enter credentials, ensure the authentication browser window stays open until the job is complete.
Both ANSI and TERA modes are now supported in dbt-teradata. TERA mode's support is introduced with dbt-teradata 1.7.1, it is an initial implementation.
TERA transaction mode
This is an initial implementation of the TERA transaction mode and may not support some use cases. We highly recommend validating all records or transformations using this mode to avoid unexpected issues or errors.
The adapter was originally created by Doug Beatty. Teradata took over the adapter in January 2022. We are grateful to Doug for founding the project and accelerating the integration of dbt + Teradata.
The adapter is published using Apache-2.0 License. Refer to the terms and conditions to understand items such as creating derivative work and the support model.