https://github.com/dpguthrie/snowflake-dbt-demo-new
https://github.com/dpguthrie/snowflake-dbt-demo-new
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/dpguthrie/snowflake-dbt-demo-new
- Owner: dpguthrie
- Created: 2023-07-21T15:11:28.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-09T22:14:44.000Z (about 1 year ago)
- Last Synced: 2025-04-09T23:23:17.204Z (about 1 year ago)
- Language: Python
- Size: 3.23 MB
- Stars: 0
- Watchers: 1
- Forks: 3
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Welcome to the dbt Labs demo dbt project! We use the [TPCH dataset](https://docs.snowflake.com/en/user-guide/sample-data-tpch.html) to create a sample project to emulate what a production project might look like!
_ __
____ ___ ____ _(_)___ ____/ /__ ____ ___ ____
/ __ `__ \/ __ `/ / __ \ / __ / _ \/ __ `__ \/ __ \
/ / / / / / /_/ / / / / / / /_/ / __/ / / / / / /_/ /
/_/ /_/ /_/\__,_/_/_/ /_/ \__,_/\___/_/ /_/ /_/\____/
## Special demos
- **dbt-external-tables:** Manage database objects that read data external to the warehouse within dbt. See `models/demo_examples/external_sources.yml`.
- **Lifecycle Notifications:** See examples of dbt Cloud Job Lifecycle Notifications [here](https://gist.github.com/boxysean/3166b3ac55801685b6d275e9a9ddd5ee).
- **Pivot tables:** One example of creating a pivot table using Snowflake syntax, another example using Jinja. See `models/aggregates/agg_yearly_*.sql`.
## dbt Cloud Attached CLI
The files in `.devcontainer` allow a user to spin up a container with the dbt Cloud CLI installed. The `.devcontainer.json` is currently minimally configured as a python container - feel free to modify or [add features](https://containers.dev/features) to fit your use case. You can do this either [locally](https://code.visualstudio.com/docs/devcontainers/tutorial) or using Github's [Codespaces](https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)
### Requirements
You'll need to set an environment variable, `DBT_CLOUD_API_KEY`. You can set this locally or when using within codespaces, you'll need to add a secret in Github - [instructions here](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces).
## Codegen Examples
The codegen package can be run via the IDE, by clicking the "Compile" button, or in the command line.
### Command Line
The example below shows how we can generate yml for a particular source:
```bash
dbt run-operation generate_source --args '{"schema_name": "tpch_sf001", "database_name": "raw", "generate_columns": "true", "include_descriptions": "true"}'
```
### IDE
Paste in the snippets below in your IDE and click "Compile".
### codegen.generate_source
Generates lightweight YAML for a Source
```sql
{{
codegen.generate_source(
schema_name='tpch_sf001',
database_name='raw',
generate_columns='true',
include_descriptions='true',
)
}}
```
### codegen.generate_base_model
Generates SQL for a staging model
```sql
{{
codegen.generate_base_model(
source_name='tpch',
table_name='orders',
)
}}
```
### codegen.generate_model_yaml
Generates the YAML for a given model
```sql
{{
codegen.generate_model_yaml(
model_name='stg_tpch_orders'
)
}}
```
Generates the YAML for multiple models
```sql
{{
generate_models_yaml(
model_names=[
'stg_tpch_orders',
'stg_tpch_parts',
'stg_tpch_regions',
]
)
}}
```