Go to file
2024-06-04 08:16:15 -04:00
.github/workflows AN-4842 SL 2.0 (#55) 2024-05-29 10:09:14 -04:00
analysis Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
data AN-4842 SL 2.0 (#55) 2024-05-29 10:09:14 -04:00
docs overview (#30) 2023-02-13 11:04:54 -05:00
macros QN 2024-06-03 16:58:03 -04:00
models obs updates 2024-06-04 08:16:15 -04:00
snapshots Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
tests Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
.gitignore Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
.user.yml packages. 2023-06-05 18:31:24 -04:00
dbt_project.yml AN-4842 SL 2.0 (#55) 2024-05-29 10:09:14 -04:00
docker-compose.yml Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
Dockerfile Initial commit for Cosmos DBT Project (#1) 2022-11-09 09:19:00 -05:00
LICENSE Initial commit 2022-11-01 14:16:22 -04:00
Makefile Stream 417 network version genesis backfill (#44) 2023-10-20 07:25:58 -07:00
package-lock.yml AN-4842 SL 2.0 (#55) 2024-05-29 10:09:14 -04:00
packages.yml AN-4842 SL 2.0 (#55) 2024-05-29 10:09:14 -04:00
profiles.yml initial commit for actions (#27) 2023-01-05 10:40:10 -05:00
README.md tags (#29) 2023-01-19 14:23:27 -05:00
requirements.txt reqs file 2024-03-13 15:59:03 -04:00

Profile Set Up

Use the following within profiles.yml


cosmos:
  target: dev
  outputs:
    dev:
      type: snowflake
      account: vna27887.us-east-1
      role: INTERNAL_DEV
      user: <USERNAME>
      password: <PASSWORD>
      region: us-east-1
      database: COSMOS_DEV
      warehouse: DBT_EMERGENCY
      schema: silver
      threads: 12
      client_session_keep_alive: False
      query_tag: <QUERY_TAG>
    prod:
      type: snowflake
      account: vna27887.us-east-1
      role: DBT_CLOUD_COSMOS
      user: <USERNAME>
      password: <PASSWORD>
      region: us-east-1
      database: COSMOS
      warehouse: DBT_EMERGENCY
      schema: silver
      threads: 12
      client_session_keep_alive: False
      query_tag: <QUERY_TAG>

Variables

To control which external table environment a model references, as well as, whether a Stream is invoked at runtime using control variables:

  • STREAMLINE_INVOKE_STREAMS When True, invokes streamline on model run as normal When False, NO-OP
  • STREAMLINE_USE_DEV_FOR_EXTERNAL_TABLES When True, uses DEV schema Streamline.Cosmos_DEV When False, uses PROD schema Streamline.Cosmos

Default values are False

  • Usage: dbt run --var '{"STREAMLINE_USE_DEV_FOR_EXTERNAL_TABLES":True, "STREAMLINE_INVOKE_STREAMS":True}' -m ...

Resources:

  • Learn more about dbt in the docs
  • Check out Discourse for commonly asked questions and answers
  • Join the chat on Slack for live discussions and support
  • Find dbt events near you
  • Check out the blog for the latest news on dbt's development and best practices

Applying Model Tags

Database / Schema level tags

Database and schema tags are applied via the add_database_or_schema_tags macro. These tags are inherited by their downstream objects. To add/modify tags call the appropriate tag set function within the macro.

{{ set_database_tag_value('SOME_DATABASE_TAG_KEY','SOME_DATABASE_TAG_VALUE') }}
{{ set_schema_tag_value('SOME_SCHEMA_TAG_KEY','SOME_SCHEMA_TAG_VALUE') }}

Model tags

To add/update a model's snowflake tags, add/modify the meta model property under config. Only table level tags are supported at this time via DBT.

{{ config(
    ...,
    meta={
        'database_tags':{
            'table': {
                'PURPOSE': 'SOME_PURPOSE'
            }
        }
    },
    ...
) }}

By default, model tags are not pushed to snowflake on each load. You can push a tag update for a model by specifying the UPDATE_SNOWFLAKE_TAGS project variable during a run.

dbt run --var '{"UPDATE_SNOWFLAKE_TAGS":True}' -s models/core/core__fact_swaps.sql

Querying for existing tags on a model in snowflake

select *
from table(solana.information_schema.tag_references('solana.core.fact_blocks', 'table'));