Skip to content

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 alias când numele fișierului diferă de numele tabelului
  • Setează schema personalizată doar când ai nevoie de izolare
  • Documentează configurațiile în schema.yml

Greșeli Comune

  1. Configurare contradictorie — YAML și config() în SQL se suprascriu; config() din SQL are prioritate
  2. Schema inexistentă — dacă schema nu există, dbt o creează, dar eșuează fără permisiuni
  3. Alias lipsă — fără alias, numele tabelului = numele fișierului, care poate fi greșit
  4. Tag-uri nefolosite — tag-urile sunt utile doar dacă filtrezi cu --select tag:...

Întrebări Frecvente

### Pot configura un model în mai multe moduri?

Da — poți combina configurarea din dbt_project.yml, schema.yml și blocul config() din SQL. Prioritatea e: config() > YAML per model > YAML per director.

Cum configurez un model să nu se execute?

Setează enabled: false în configurare: config(enabled=false).

Ce este + în fața proprietăților din dbt_project.yml?

+ indică faptul că proprietatea se aplică descendent — toate modelele din acel director și subdirectoare moștenesc configurația.

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