SQL Dojo Beta
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_idpaid_atordered_at
Keine Zeile
In Randori ausprobieren