Técnica
Tabla de cuarentena
Las filas erróneas van a una tabla aparte con la regla que incumplen, en lugar de filtrarse y olvidarse.
Calcule un reason por fila con un único CASE cuyos WHEN siguen el orden de las reglas. Las filas sin motivo van a
la tabla de staging, las demás a la tabla de cuarentena. Compruebe que limpias + en cuarentena = brutas, y siga la cuarentena por
motivo y por día: es la calidad de los datos de la fuente, como una cifra sobre la que sus responsables pueden actuar.
WITH raw_signups(signup_id, email, country) AS (VALUES
(1, 'lea@example.com', 'FR'), (2, NULL, 'FR'),
(3, 'tom.example.com', 'BE'), (4, 'mia@example.com', 'CH'))
SELECT signup_id,
CASE WHEN email IS NULL THEN 'missing email'
WHEN email NOT LIKE '%@%' THEN 'invalid email'
WHEN country NOT IN ('FR', 'BE', 'DE') THEN 'unknown country'
END AS reason
FROM raw_signups
ORDER BY signup_id;
| signup_id | reason |
|---|---|
| 1 | NULL |
| 2 | missing email |
| 3 | invalid email |
| 4 | unknown country |
Practicar:Quarantine, don't drop