ExasolUserPassword#

Maps Airflow Exasol connections with a username and password to dbt profiles.

https://docs.getdbt.com/reference/warehouse-setups/exasol-setup

This profile mapping translates Airflow connections with the type exasol into dbt profiles. To use this profile, import it from cosmos.profiles:

from cosmos.profiles import ExasolUserPasswordProfileMapping

profile = ExasolUserPasswordProfileMapping(
    conn_id = 'my_exasol_connection',
    profile_args = { ... },
)

While the profile mapping pulls fields from Airflow connections, you may need to supplement it with additional profile_args. The below table shows which fields are required, along with those not required but pulled from the Airflow connection if present. You can also add additional fields to the profile_args dict.

dbt Field Name

Required

Airflow Field Name

dsn

True

host

user

True

login

password

True

password

dbname

True

schema

encryption

False

extra.encryption

compression

False

extra.compression

connection_timeout

False

extra.connection_timeout

socket_timeout

False

extra.socket_timeout

protocol_version

False

extra.protocol_version

threads

True

schema

True

Some notes about the table above:

  • This table doesn’t necessarily show the full list of fields you can pass to the dbt profile. To see the full list of fields, see the link to the dbt docs at the top of this page.

  • If the Airflow field name starts with an extra., this means that the field is nested under the extra field in the Airflow connection. For example, if the Airflow field name is extra.token, this means that the field is nested under extra in the Airflow connection, and the field name is token.

  • If there are multiple Airflow field names, the profile mapping looks at those fields in order. For example, if the Airflow field name is ['password', 'extra.token'], the profile mapping will first look for a field named password. If that field is not present, it will look for extra.token.