SQL Dojo Beta
Muster

Quarantänetabelle

Fehlerhafte Zeilen kommen in eine eigene Tabelle, zusammen mit der Regel, die sie verletzen, statt herausgefiltert und vergessen zu werden.

Berechnen Sie einen reason pro Zeile mit einem einzigen CASE, dessen WHENs der Reihenfolge der Regeln folgen. Zeilen ohne Grund kommen in die Staging-Tabelle, die anderen in die Quarantänetabelle. Testen Sie, dass sauber + Quarantäne = roh, und verfolgen Sie die Quarantäne pro Grund und pro Tag: Sie ist die Datenqualität der Quelle, als Zahl, mit der ihre Verantwortlichen arbeiten können.

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_idreason
1NULL
2missing email
3invalid email
4unknown country
In Randori ausprobieren