Técnica
Invariantes como tests
Una regla que debe cumplirse en cada fila, o entre un modelo y su fuente, escrita como «las filas que la incumplen».
SELECT … WHERE total <> items - discounts + shipping es un test: pasa cuando no devuelve ninguna fila (dbt ejecuta este tipo de
consultas como singular tests). Entre capas, compare recuentos: un JOIN que solo añade columnas debe mantener rows_in = rows_out,
y COUNT(*) frente a COUNT(DISTINCT key) en cada CTE muestra dónde se rompió la granularidad.
-- 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 |
|---|---|---|
| Ninguna fila | ||