Cum să configurezi modele în dbt
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să configurezi modele în dbt. We cover key concepts, practical examples, and best practices.
Vei învăța cum să configurezi modele în dbt folosind fișiere YAML și blocuri de configurare Jinja pentru a controla materializarea, schemele și comportamentul fiecărui model.
Problema
Fără configurare explicită, dbt folosește setările implicite (view, schema default) care nu sunt potrivite pentru toate modelele. Unele modele au nevoie de tabele, altele de scheme separate.
Modul Greșit
# dbt_project.yml — nicio configurare specifică pe model
models:
my_project:
+materialized: view # Toate modelele devin view-uri
-- models/orders.sql — model lent care rulează de fiecare dată
SELECT * FROM {{ ref('stg_orders') }}
WHERE status = 'active'
-- Re-executat la fiecare dbt run, deși datele nu se schimbă des
Modul Corect
# dbt_project.yml — configurare pe subdirectoare
models:
my_project:
staging:
+materialized: view
+schema: staging
marts:
+materialized: table
+schema: analytics
# models/marts/schema.yml — configurare per model
version: 2
models:
- name: order_summary
config:
materialized: incremental
unique_key: order_id
schema: analytics
alias: daily_orders
tags: ['daily', 'finance']
-- models/marts/order_summary.sql
{{ config(
materialized='incremental',
unique_key='order_id',
schema='analytics'
) }}
SELECT * FROM {{ ref('stg_orders') }}
{% if is_incremental() %}
WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}
Pas cu Pas
1. Configurează în dbt_project.yml
models:
my_project:
+materialized: table
+post_hook: "GRANT SELECT ON {{ this }} TO analyst"
2. Adaugă configurare per model
# models/schema.yml
models:
- name: user_summary
config:
materialized: table
schema: reporting
alias: users_daily
3. Folosește blocul config() în SQL
{{ config(materialized='incremental', unique_key='id') }}
SELECT * FROM {{ ref('source') }}
Sfaturi de Prevenție
- Configurează materializarea la nivel de director în
dbt_project.yml - Folosește
aliascând numele fișierului diferă de numele tabelului - Setează
schemapersonalizată doar când ai nevoie de izolare - Documentează configurațiile în
schema.yml
Greșeli Comune
- Configurare contradictorie — YAML și
config()în SQL se suprascriu;config()din SQL are prioritate - Schema inexistentă — dacă schema nu există, dbt o creează, dar eșuează fără permisiuni
- Alias lipsă — fără alias, numele tabelului = numele fișierului, care poate fi greșit
- Tag-uri nefolosite — tag-urile sunt utile doar dacă filtrezi cu
--select tag:...
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru configurare avansată a modelelor.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro