Skip to content

Cum să creezi modele de tip table în dbt

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să creezi modele de tip table în dbt. We cover key concepts, practical examples, and best practices.

Vei învăța cum să creezi modele de tip table în dbt, alegând materializarea table pentru date agregate și rapoarte care necesită performanță optimă la interogare.

Problema

View-urile sînt lente la interogare pentru date agregate complexe. Tabelele materializate oferă performanță maximă la citire, în schimbul unui timp de reîmprospătare.

Modul Greșit

-- models/monthly_revenue.sql — view lent pentru date agregate
{{ config(materialized='view') }}
SELECT
    DATE_TRUNC('month', order_date) AS month,
    SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1;
-- Fiecare interogare recalculează agregarea — foarte lent

Modul Corect

-- models/monthly_revenue.sql — table materializată
{{ config(materialized='table') }}

SELECT
    DATE_TRUNC('month', order_date) AS month,
    SUM(total) AS revenue,
    COUNT(*) AS order_count
FROM {{ ref('stg_orders') }}
GROUP BY 1
ORDER BY 1 DESC
dbt run --model monthly_revenue

Output:

17:23:45  1 of 1 START sql table model monthly_revenue
17:23:47  1 of 1 OK created sql table model monthly_revenue
17:23:47  Finished running 1 table model in 2.34s

Pas cu Pas

1. Configurează materializarea table

# dbt_project.yml
models:
  marts:
    +materialized: table

2. Scrie modelul cu agregări

{{ config(materialized='table') }}
SELECT
    category,
    SUM(amount) AS total_amount,
    AVG(amount) AS avg_amount
FROM {{ ref('stg_transactions') }}
GROUP BY category

3. Rulează

dbt run --model monthly_revenue

Sfaturi de Prevenție

  • Folosește table pentru date agregate interogate frecvent
  • Table-urile se recrează complet la fiecare dbt run
  • Pentru tabele foarte mari, preferă materializarea incrementală
  • Programează reîmprospătarea în funcție de frecvența actualizării datelor sursă

Greșeli Comune

  1. Table pentru date care nu se schimbă — risipă de resurse de calcul
  2. Table fără index — adaugă indexuri în post-hook pentru performanță
  3. Table prea mare — peste 10M rânduri, treci la incremental
  4. Full refresh neprogramat — datele din table devîn învechite

Întrebări Frecvente

### Cât de des se reîmprospătează un table?

La fiecare dbt run. Programează execuția în funcție de necesități — zilnic, orar, sau la cerere.

Table-ul recrează sau face truncate?

Implicit, dbt face CREATE TABLE AS (DROP + CREATE). Poți configura table_compression și table_type pentru optimizări.

Pot adăuga indexuri pe un table?

Da — în post-hook: GRANT SELECT ON {{ this }} TO analyst și CREATE INDEX ON {{ this }}(col_name).

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru tabele materializate rapide.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro