-
Identify the raw source table — check dbt/models/sources.yml; add it if missing.
-
Create the SQL model at dbt/models/silver/<layer>_<source>__<entity>.sql:
{{ config(materialized='table') }}
SELECT
{{ clean_text('col') }} AS col,
{{ parse_bdpm_date('date_col') }} AS date_col
FROM {{ source('raw', 'table_name') }}
WHERE {{ is_valid_cis('cis') }}
-
Create the contract at dbt/models/silver/<layer>_<source>__<entity>.yml:
version: 2
models:
- name: <layer>_<source>__<entity>
description: "..."
columns:
- name: <pk>
data_tests: [unique, not_null]
-
Add a new macro in dbt/macros/ if any transformation is reused across models.
-
Validate locally:
uv run dotenv -f dbt/.env run -- uv run dbt run --project-dir dbt --profiles-dir dbt --select <model_name>
uv run dotenv -f dbt/.env run -- uv run dbt test --project-dir dbt --profiles-dir dbt --select <model_name>