SQL Dojo Beta
Tecnica

Invarianti come test

Una regola che deve valere su ogni riga, o tra un modello e la sua sorgente, scritta come "le righe che la violano".

SELECT … WHERE total <> items - discounts + shipping è un test: passa quando non restituisce alcuna riga (dbt esegue queste query come singular test). Tra i layer, confronta i conteggi: una join che aggiunge solo colonne deve mantenere rows_in = rows_out, e COUNT(*) rispetto a COUNT(DISTINCT key) in ogni CTE mostra dove si è rotta la granularità.

-- 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
Nessuna riga
Provalo in Randori