dbt Tips
Naming Convention
As noted in the model standards, we segment steps into bronze/silver/core layers and these are organized via schemas within a database. The directory structure within models/
is not what determines database structure! Our models include a pre-written macro that handles this database organization based on the model name! A double underscore in the file-name will be parsed as a schema break.
So, silver__blocks
compiles to a table blocks
in schema silver
.
Table Materialization
A table is materialized as incremental via the model config. Flipside does this in each model by using a config block. There are three properties in the config block to note for setting an incremental model.
materialized
sets the type of modelincremental_strategy
determines the build approach. On Snowflake, the default ismerge
but you may also seedelete+insert
unique_key
is a required parameter, regardless of incremental or table, but is used in theincremental_strategy
to identify records.
When creating models with incremental materialization, we need to write an incremental logic within the model. It is important for the incremental logic to be based on _inserted_timestamp
and not on the block_timestamp
. This is important especially when the data encounters gaps on certain dates. This enables the model to heal itself because gaps are associated with block_timestamp
and when they get-inserted later, they get captured by _inserted_timestamp
.
Last updated