Muster
Invarianten als Tests
Eine Regel, die für jede Zeile oder zwischen einem Modell und seiner Quelle gelten muss, geschrieben als „die Zeilen, die sie verletzen“.
SELECT … WHERE total <> items - discounts + shipping ist ein Test: Er ist bestanden, wenn er keine Zeile liefert (dbt
führt solche Abfragen als Singular Tests aus). Zwischen den Schichten vergleichen Sie Zeilenzahlen: Ein Join, der nur
Spalten hinzufügt, muss rows_in = rows_out einhalten, und COUNT(*) gegen COUNT(DISTINCT key) in jeder CTE zeigt,
wo die Granularität gebrochen ist.
-- A payment never comes before its order: no row means the test passes. SELECT p.payment_id, p.paid_at, o.ordered_at FROM payments p JOIN orders o ON o.order_id = p.order_id WHERE p.paid_at < o.ordered_at;
| payment_id | paid_at | ordered_at |
|---|---|---|
| Keine Zeile | ||