85 lines
4.3 KiB
Python
85 lines
4.3 KiB
Python
from typing import Any, Dict
|
|
|
|
from dbt.contracts.connection import HasCredentials
|
|
|
|
from dbt.context.base import (
|
|
BaseContext, contextproperty
|
|
)
|
|
|
|
|
|
class TargetContext(BaseContext):
|
|
def __init__(self, config: HasCredentials, cli_vars: Dict[str, Any]):
|
|
super().__init__(cli_vars=cli_vars)
|
|
self.config = config
|
|
|
|
@contextproperty
|
|
def target(self) -> Dict[str, Any]:
|
|
"""`target` contains information about your connection to the warehouse
|
|
(specified in profiles.yml). Some configs are shared between all
|
|
adapters, while others are adapter-specific.
|
|
|
|
Common:
|
|
|
|
|----------|-----------|------------------------------------------|
|
|
| Variable | Example | Description |
|
|
|----------|-----------|------------------------------------------|
|
|
| name | dev | Name of the active target |
|
|
|----------|-----------|------------------------------------------|
|
|
| schema | dbt_alice | Name of the dbt schema (or, dataset on |
|
|
| | | BigQuery) |
|
|
|----------|-----------|------------------------------------------|
|
|
| type | postgres | The active adapter being used. |
|
|
|----------|-----------|------------------------------------------|
|
|
| threads | 4 | The number of threads in use by dbt |
|
|
|----------|-----------|------------------------------------------|
|
|
|
|
Snowflake:
|
|
|
|
|----------|-----------|------------------------------------------|
|
|
| Variable | Example | Description |
|
|
|----------|-----------|------------------------------------------|
|
|
| database | RAW | The active target's database. |
|
|
|----------|-----------|------------------------------------------|
|
|
| warehouse| TRANSFORM | The active target's warehouse. |
|
|
|----------|-----------|------------------------------------------|
|
|
| user | USERNAME | The active target's user |
|
|
|----------|-----------|------------------------------------------|
|
|
| role | ROLENAME | The active target's role |
|
|
|----------|-----------|------------------------------------------|
|
|
| account | abc123 | The active target's account |
|
|
|----------|-----------|------------------------------------------|
|
|
|
|
Postgres/Redshift:
|
|
|
|
|----------|-------------------|----------------------------------|
|
|
| Variable | Example | Description |
|
|
|----------|-------------------|----------------------------------|
|
|
| dbname | analytics | The active target's database. |
|
|
|----------|-------------------|----------------------------------|
|
|
| host | abc123.us-west-2. | The active target's host. |
|
|
| | redshift.amazonaws| |
|
|
| | .com | |
|
|
|----------|-------------------|----------------------------------|
|
|
| user | dbt_user | The active target's user |
|
|
|----------|-------------------|----------------------------------|
|
|
| port | 5439 | The active target's port |
|
|
|----------|-------------------|----------------------------------|
|
|
|
|
BigQuery:
|
|
|
|
|----------|-----------|------------------------------------------|
|
|
| Variable | Example | Description |
|
|
|----------|-----------|------------------------------------------|
|
|
| project | abc-123 | The active target's project. |
|
|
|----------|-----------|------------------------------------------|
|
|
|
|
"""
|
|
return self.config.to_target_dict()
|
|
|
|
|
|
def generate_target_context(
|
|
config: HasCredentials, cli_vars: Dict[str, Any]
|
|
) -> Dict[str, Any]:
|
|
ctx = TargetContext(config, cli_vars)
|
|
return ctx.to_dict()
|