Skip to main content

prefect_dbt.cli.credentials

Module containing credentials for interacting with dbt CLI

Functions

target_configs_discriminator

target_configs_discriminator(v: Any) -> str
Discriminator function for target configs. Returns the block type slug.

Classes

DbtCliProfile

Profile for use across dbt CLI tasks and flows. Attributes:
  • name: Profile name used for populating profiles.yml.
  • target: The default target your dbt project will use.
  • target_configs: Target configs contain credentials and settings, specific to the warehouse you’re connecting to. To find valid keys, head to the Available adapters page and click the desired adapter’s “Profile Setup” hyperlink.
  • global_configs: Global configs control things like the visual output of logs, the manner in which dbt parses your project, and what to do when dbt finds a version mismatch or a failing model. Valid keys can be found here.
Examples: Load stored dbt CLI profile:
from prefect_dbt.cli import DbtCliProfile
dbt_cli_profile = DbtCliProfile.load("BLOCK_NAME").get_profile()
Get a dbt Snowflake profile from DbtCliProfile by using SnowflakeTargetConfigs:
from prefect_dbt.cli import DbtCliProfile
from prefect_dbt.cli.configs import SnowflakeTargetConfigs
from prefect_snowflake.credentials import SnowflakeCredentials
from prefect_snowflake.database import SnowflakeConnector

credentials = SnowflakeCredentials(
    user="user",
    password="password",
    account="account.region.aws",
    role="role",
)
connector = SnowflakeConnector(
    schema="public",
    database="database",
    warehouse="warehouse",
    credentials=credentials,
)
target_configs = SnowflakeTargetConfigs(
    connector=connector
)
dbt_cli_profile = DbtCliProfile(
    name="jaffle_shop",
    target="dev",
    target_configs=target_configs,
)
profile = dbt_cli_profile.get_profile()
Get a dbt Redshift profile from DbtCliProfile by using generic TargetConfigs:
from prefect_dbt.cli import DbtCliProfile
from prefect_dbt.cli.configs import GlobalConfigs, TargetConfigs

target_configs_extras = dict(
    host="hostname.region.redshift.amazonaws.com",
    user="username",
    password="password1",
    port=5439,
    dbname="analytics",
)
target_configs = TargetConfigs(
    type="redshift",
    schema="schema",
    threads=4,
    extras=target_configs_extras
)
dbt_cli_profile = DbtCliProfile(
    name="jaffle_shop",
    target="dev",
    target_configs=target_configs,
)
profile = dbt_cli_profile.get_profile()
Methods:

get_profile

get_profile(self) -> Dict[str, Any]
Returns the dbt profile, likely used for writing to profiles.yml. Returns:
  • A JSON compatible dictionary with the expected format of profiles.yml.