Cum să definești surse de date în dbt cu source()
In this tutorial, you'll learn about Cum să definești surse de date în dbt cu source(). We cover key concepts, practical examples, and best practices.
Vei învăța cum să definești și să referențiezi surse de date brute în dbt folosind funcția source(), permițând track-uirea provenienței și monitorizarea prospețimii datelor.
Problema
Tabelele brute din baza de date (raw tables) sunt referențiate direct în SQL cu nume hardcodate. Când structura se schimbă, trebuie actualizat peste tot. dbt oferă source() pentru a abstractiza accesul la datele brute.
Modul Greșit
-- Query hardcodat — numele bazei și schemei sunt fixe
SELECT * FROM production.raw.orders
WHERE order_date >= '2024-01-01';
-- Dacă baza se redenumește, toate query-urile se strică
Modul Corect
# models/sources.yml — definiția sursei
version: 2
sources:
- name: raw
database: production
schema: raw
tables:
- name: orders
description: "Comenzi brute din sistemul ERP"
columns:
- name: id
description: "ID unic comandă"
- name: status
description: "Status comandă"
- name: users
description: "Utilizatori din sistemul CRM"
-- models/stg_orders.sql — referință prin source()
SELECT
id,
user_id,
total,
status,
created_at
FROM {{ source('raw', 'orders') }}
WHERE status IS NOT NULL
dbt run --model stg_orders
Output:
17:23:45 1 of 1 START sql view model stg_orders
17:23:46 1 of 1 OK created sql view model stg_orders
Pas cu Pas
1. Creează fișierul sources.yml
version: 2
sources:
- name: raw
database: analytics_db
schema: raw_data
tables:
- name: orders
- name: users
- name: products
2. Referențiază sursa în model
SELECT * FROM {{ source('raw', 'orders') }}
3. Configurează freshness
sources:
- name: raw
freshness:
warn_after: {count: 12, period: hour}
error_after: {count: 24, period: hour}
loaded_at_field: created_at
tables:
- name: orders
dbt source freshness
Sfaturi de Prevenție
- Definește toate tabelele brute ca surse în YAML
- Configurează
freshnesspentru a monitoriza întârzierile - Documentează fiecare coloană din sursă
- Folosește
source()în loc deref()pentru date brute
Greșeli Comune
- Nume sursă greșit —
source('raws', 'orders')când sursa se numeșteraw— eroare de compilare - Sursă nedeclarată — folosești
source()fără să definești sursa în YAML - Database sau schema incorectă — dbt nu găsește tabela dacă
databasesauschemadin YAML nu corespund - Freshness fără
loaded_at_field— dbt nu poate verifica prospețimea fără câmpul de timestamp
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru gestionarea surselor de date.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro