alias
- Models
- Seeds
- Snapshots
- Tests
Specify a custom alias for a model in your dbt_project.yml
file, models/properties.yml
file, or config block in a SQL file.
For example, if you have a model that calculates sales_total
and want to give it a more user-friendly alias, you can alias it as shown in the following examples.
In the dbt_project.yml
file, the following example sets a default alias
for the sales_total
model at the project level:
models:
your_project:
sales_total:
+alias: sales_dashboard
The following specifies an alias
as part of the models/properties.yml
file metadata, useful for centralized configuration:
version: 2
models:
- name: sales_total
config:
alias: sales_dashboard
The following assigns the alias
directly in the In models/sales_total.sql
file:
{{ config(
alias="sales_dashboard"
) }}
This would return analytics.finance.sales_dashboard
in the database, instead of the default analytics.finance.sales_total
.
Configure a seed's alias in your dbt_project.yml
file or a properties.yml
file. The following examples demonstrate how to alias
a seed named product_categories
to categories_data
.
In the dbt_project.yml
file at the project level:
seeds:
your_project:
product_categories:
+alias: categories_data
In the seeds/properties.yml
file:
version: 2
seeds:
- name: product_categories
config:
alias: categories_data
This would return the name analytics.finance.categories_data
in the database.
In the following second example, the seed at seeds/country_codes.csv
will be built as a tableIn simplest terms, a table is the direct storage of data in rows and columns. Think excel sheet with raw values in each of the cells. named country_mappings
.
seeds:
jaffle_shop:
country_codes:
+alias: country_mappings
Configure a snapshots's alias in your dbt_project.yml
file, snapshots/snapshot_name.yml
file, or config block.
The following examples demonstrate how to alias
a snapshot named your_snapshot
to the_best_snapshot
.
In the dbt_project.yml
file at the project level:
snapshots:
your_project:
your_snapshot:
+alias: the_best_snapshot
In the snapshots/snapshot_name.yml
file:
version: 2
snapshots:
- name: your_snapshot_name
config:
alias: the_best_snapshot
</File>
In `snapshots/your_snapshot.sql` file:
<File name='snapshots/your_snapshot.sql'>
```sql
{{ config(
alias="the_best_snapshot"
) }}
This would build your snapshot to analytics.finance.the_best_snapshot
in the database.
Configure a data test's alias in your dbt_project.yml
file, properties.yml
file, or config block in the model file.
The following examples demonstrate how to alias
a unique data test named order_id
to unique_order_id_test
to identify a specific data test.
In the dbt_project.yml
file at the project level:
tests:
your_project:
+alias: unique_order_id_test
In the models/properties.yml
file:
models:
- name: orders
columns:
- name: order_id
tests:
- unique:
alias: unique_order_id_test
In tests/unique_order_id_test.sql
file:
{{ config(
alias="unique_order_id_test",
severity="error"
) }}
When using store_failures_as
, this would return the name analytics.dbt_test__audit.orders_order_id_unique_order_id_test
in the database.
Definition
Optionally specify a custom alias for a model, data test, snapshot, or seed.
When dbt creates a relation (tableIn simplest terms, a table is the direct storage of data in rows and columns. Think excel sheet with raw values in each of the cells./viewA view (as opposed to a table) is a defined passthrough SQL query that can be run against a database (or data warehouse).) in a database, it creates it as: {{ database }}.{{ schema }}.{{ identifier }}
, e.g. analytics.finance.payments
The standard behavior of dbt is:
- If a custom alias is not specified, the identifier of the relation is the resource name (i.e. the filename).
- If a custom alias is specified, the identifier of the relation is the
{{ alias }}
value.
Note With an ephemeral model, dbt will always apply the prefix __dbt__cte__
to the CTEA Common Table Expression (CTE) is a temporary result set that can be used in a SQL query. You can use CTEs to break up complex queries into simpler blocks of code that can connect and build on each other. identifier. This means that if an alias is set on an ephemeral model, then its CTE identifier will be __dbt__cte__{{ alias }}
, but if no alias is set then its identifier will be __dbt__cte__{{ filename }}
.
To learn more about changing the way that dbt generates a relation's identifier
, read Using Aliases.