dbt
What is dbt?
dbt enables analytics engineers to transform data in their warehouses by simply writing select statements. dbt handles turning these select statements into tables and views.
dbt does the T in ELT (Extract, Load, Transform) processes – it doesn’t extract or load data, but it’s extremely good at transforming data that’s already loaded into your warehouse.
Working with dbt in Deepnote
- Using the transformed data. The most common use case is to build Deepnote notebooks based on the tables and views which are the results of the dbt jobs.
- Prototyping dbt models. Deepnote excels at exploratory data analysis, which is often the foundation of defining and improving models. With the new Semantic layer integration, Deepnote can work directly with jinja SQL.
- Exploring dbt metrics. Browse the most important metrics of your company and see what dimensions they can be broken down by.
Setting up the integration
In order to query the transformed data, you must satisfy the prerequisites and follow a few simple steps to set everything up.
Prerequisites
To begin using dbt Semantic layer, you should:
- Use Snowflake as a warehouse
- Use dbt Cloud on the Team plan or Enterprise plan (not a single-tenant version)
- Use dbt Core v1.0 or higher
Creating the integration
- Start by creating a Snowflake integration. If you already have one, you can edit its settings.
- Turn on the toggle for dbt Semantic layer, and fill in the three fields:
- dbt service token – with Metadata Only (or higher) permissions
- dbt primary Job ID – any job which has a production environment defined, and which ran at least once
- Proxy Server URL – a url you can find in your dbt environment settings. Add it without the leading https://.
Note – the Snowflake credentials in Deepnote must match the ones used in the linked dbt job production environment.
Running queries
Now you can add SQL blocks to your notebooks and run queries which include jinja.
You can verify it works by running:
select '{{ dbt_version }}'
Semantic layer
An exceptionally powerful capability of dbt is its Semantic layer. It enables you to use your pre-defined metrics in Deepnote's notebooks.
Exploring metrics
In the right sidebar, open the Integrations tab and press View schema on the box with the connected Snowflake integration.
Under metrics layer, you will be able to browse the available metrics and their dimensions.
Querying metrics
Use dbt syntax to query your metrics. An example query:
select * from {{ metrics.metric(
metric_name='revenue',
grain='month',
dimensions=['revenue_type']) }}