DBT

Învață Snowflake & dbt (Data Stack): comenzi explicate cu exemple

16 comenzi 7 categorii

Ecosistemul analitic de date a trecut printr-o transformare seismică odată cu apariția Modern Data Stack (MDS). În locul vechilor procese greoaie de tip ETL (Extract, Transform, Load) derulate pe servere locale lente, organizațiile moderne adoptă paradigma ELT (Extract, Load, Transform): datele brute sunt încărcate direct într-un Cloud Data Warehouse elastic precum Snowflake, iar întreaga logică de transformare și modelare de afaceri este orchestrată declarativ folosind dbt (data build tool).

Snowflake oferă o arhitectură unică patentată care decuplează complet Stocarea (Storage) de Calcul (Compute – Virtual Warehouses), permițând scalarea instantanee în sus sau în jos fără nicio întrerupere. Împreună cu dbt, analiștii și inginerii de date scriu simple interogări SQL modulare (imbricate cu Jinja), beneficiind de testare automată a datelor, generare de diagrame de dependențe (Data Lineage) și versionare curată în Git.

Arhitectura Modern Data Stack (Snowflake + dbt)
# 1. Ingestie Date Brute (Fivetran, Airbyte, Kafka)
#              │
#              ▼ (Load direct în Cloud)
# ┌─────────────────────────────────────────────────────────────┐
# │ Snowflake Data Cloud                                        │
# │  ├── Centralized Storage (Micro-partiționat, scalabil petabytes)
# │  └── Virtual Warehouses Independente (Calcul dedicat):      │
# │       ├── Warehouse Marketing (Dimensiune S - 1 nod)        │
# │       ├── Warehouse Finance   (Dimensiune L - 8 noduri)     │
# │       └── Warehouse dbt Model (Scalează automat la rulare!) │
# └────────────────────────────┬────────────────────────────────┘
#                              │
#                              ▼ (Transformare modulară ELT)
# ┌─────────────────────────────────────────────────────────────┐
# │ dbt (data build tool):                                      │
# │  ├── Models: SELECT * FROM {{ ref('stg_users') }}           │
# │  ├── Tests: unique, not_null, accepted_values               │
# │  └── Documentation: Graf interactiv de dependențe (Lineage) │
# └─────────────────────────────────────────────────────────────┘

Pilonii Tehnologici ai Snowflake & dbt

Concept / Tehnologie Caracteristică Unică Beneficiu în Producție
Decuplare Storage / Compute Stocarea este ieftină și partajată pe cloud, în timp ce resursele CPU pornesc și se opresc la secundă. Echipele nu concurează niciodată pentru resurse; rapoartele financiare grele nu blochează dashboard-urile live.
Zero-Copy Cloning Duplicarea instantanee a unei baze de date întregi de terabytes fără copiere fizică de date. Crearea de medii identice de staging sau dezvoltare în sub 3 secunde, cu zero costuri de stocare suplimentară.
Time Travel & Fail-safe Interogarea stării istorice a datelor dintr-un punct din trecut de până la 90 de zile. Recuperare instantanee după comenzi accidentale de tip DROP TABLE sau suprascrieri greșite.
dbt Modular SQL & Jinja Compunerea interogărilor prin funcția ref() și macro-uri Jinja reutilizabile. Aplică bunele practici de inginerie software (CI/CD, teste unitare, documentație vie) peste limbajul SQL.
Model dbt Modular: models/marts/fct_orders.sql
-- Model dbt care combină staging orders și staging customers:
{{ config(
    materialized='incremental',
    unique_key='order_id'
) }}

WITH orders AS (
    SELECT * FROM {{ ref('stg_orders') }}
    {% if is_incremental() %}
        -- La rulările incrementale, preluăm doar datele noi:
        WHERE updated_at > (SELECT MAX(updated_at) FROM {{ this }})
    {% endif %}
),

customers AS (
    SELECT * FROM {{ ref('stg_customers') }}
)

SELECT
    o.order_id,
    o.customer_id,
    c.country,
    o.amount,
    o.status,
    o.created_at,
    o.updated_at
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id

Arhitectură Snowflake 1 comandă

dbt_cli 4 comenzi

Modelare dbt & SQL 1 comandă

Testare & Calitate Date 1 comandă

Snowflake Enterprise 1 comandă

dbt_jinja 4 comenzi

snowflake_sql 4 comenzi