Datenqualität: Dimensionen und Fehlerklassen — der Theorie-Rahmen hinter den SQL-Prüfungen

Über Datenqualität wird viel geschrieben und wenig gemessen. Allein das deutschsprachige Praxis-Standardwerk zum Thema listet sechzig mögliche Qualitätskriterien — von Aktualität bis Zuverlässigkeit —, und selbst die knappen Modelle kommen noch auf sechs bis fünfzehn Dimensionen. Dabei ist der Kern erstaunlich handfest: Ein Datenfehler, der beim Laden abgefangen wird, kostet eine Meldung. Derselbe Fehler, der … Weiterlesen

Datenqualität mit SQL prüfen — ein konfigurierbares Framework, das schlechte Daten generisch aufspürt

Ein Fremdschlüssel ins Leere ist schnell beschrieben — ein country_code, zu dem es keinen Eintrag in den Stammdaten gibt — und überraschend leicht falsch geprüft. Die intuitivste Formulierung ist ausgerechnet die gefährlichste: NOT IN (SELECT …) liest sich wie deutsche Prosa, kippt aber lautlos um, sobald die Referenzspalte einen einzigen NULL enthält. Dann meldet die Prüfung null verwaiste Sätze, läuft grün durch und … Weiterlesen

Duplikate finden mit SQL — von COUNT(*) > 1 bis zusammengesetzte Schlüssel

GROUP BY … HAVING count(*) > 1 ist vielleicht das meistgetippte SQL-Snippet der Welt — und trotzdem stolpert es an zwei Stellen, die kaum jemand auf dem Schirm hat: bei zusammengesetzten Schlüsseln und bei NULL. Ausgerechnet beim Umgang mit fehlenden Werten in einer eindeutigen Spalte sind sich SQL Server und Postgres nämlich uneinig — der eine erlaubt … Weiterlesen

Daten mit SQL validieren — Wertebereiche, Pflichtfelder und die NULL-Falle

Eine Wertebereichsprüfung, die grün durchläuft, ist kein Beweis für saubere Daten. Wer WHERE alter < 0 OR alter > 120 schreibt, um unplausible Altersangaben zu finden, übersieht stillschweigend jede Zeile, in der alter gar keinen Wert hat — denn ein Vergleich mit NULL ergibt in SQL weder wahr noch falsch, sondern unbekannt. Genau dieser fehlende Pflichtwert kippt später den Load ins strikt modellierte Ziel. Daten mit … Weiterlesen

Migration verifizieren — Datenqualität und Zeilen-Abgleich nach dem Umzug

Die Zeilenzahlen stimmen — Tabelle für Tabelle, Quelle gegen Ziel, alles grün. Und trotzdem ist die Migration nicht fertig. In einer Spalte sind aus NULL-Werten leere Strings geworden, in einer anderen hat der Umweg über eine CSV-Datei die letzte Nachkommastelle eines Betrags gerundet, und ein paar Umlaute sind zu Fragezeichen zerfallen. Gleiche Anzahl ist nicht gleiche Daten — … Weiterlesen

Datenqualität mit SQL prüfen — ein konfigurierbares Framework, das schlechte Daten generisch aufspürt

Schlechte Daten kündigen sich nicht an. Ein Alter von 200 Jahren, eine doppelte Kundennummer, ein Ländercode, den es nicht gibt — im Quellsystem fällt das niemandem auf. Erst wenn der ETL-Lauf die Sätze in die strikt modellierte Zielschicht schieben will, bricht der Load ab: an einem CHECK, an einem UNIQUE-Index, an einem Fremdschlüssel. Datenqualität mit SQL prüfen heißt, genau … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für date, datetime, datetime2 und time sicher anwenden

Wer einmal eine CSV-Spalte mit gemischten Datums-Formaten in eine datetime-Spalte importieren musste, weiß: Datenqualität beginnt bei der Typ-Konvertierung. SQL Server lässt einen mit style-Codes alleine, sobald das Format vom Standard abweicht — TRY_CONVERT deckt die dokumentierten Formate ab, alles andere braucht eine eigene Funktion. Das nimmst du mit: Voraussetzung: SQL Server 2017+ (für TRY_CONVERT-Styles 23/126), für die Postgres-Brücke PostgreSQL 12+. Inhalt Überblick Die wohl herausforderndste Konvertierung … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für bit sicher anwenden — Ja/Nein-Werte konvertieren

Datenqualität beginnt bei der Typ-Konvertierung — und bei bit-Spalten zeigt sich das schon beim Eingangswert: Yes/No-Informationen liegen in Legacy-Quellen in unterschiedlichsten Notationen vor (‚J‘, ‚Y‘, ‚ON‘, ‚1‘, ‚x‘, ‚-‚, …). SQL Servers eingebautes TRY_CONVERT(bit, …) deckt nur den Ziffern-Standard plus ‚true’/’false‘ ab — alles andere braucht eine eigene Konvertierungs-Funktion. Dieser Artikel beschreibt beides: was eingebaut funktioniert, wann eine fn_convert_bit-Funktion her muss und wie das Pendant in Postgres … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für float und real sicher anwenden

Datenqualität bei Gleitkomma-Spalten ist eine eigene Disziplin — und TRY_CONVERT(float, …) hat ein paar Eigenheiten, die im Import-Pfad gerne übersehen werden: eine leere Zeichenfolge wird zu 0 (statt zu NULL), ein Komma als Dezimaltrennzeichen führt zu NULL, und selbst nach einer sauberen Konvertierung ergibt 2 + 3.4 – 3.4 – 2 als float nicht exakt 0. Dieser Artikel sortiert die Regeln, zeigt das sichere Konvertierungs-Pattern und macht … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für money und smallmoney sicher anwenden

Wer einmal einen Kassen-Report mit Werten wie ‚1.234,56 €‘ aus einer CSV in eine SQL-Server-Datenbank importieren musste, kennt das Muster: TRY_CONVERT(money, ‚1,234.56‘) liefert 1234.5600. Doch TRY_CONVERT(money, ‚1.234,56‘) liefert NULL. Und selbst wenn der Import sauber läuft: money / 100 * 100 ist nicht zwangsläufig dasselbe wie der Ausgangswert. Kurzüberblick — was dieser Artikel klärt: Voraussetzung: SQL Server 2017+ (für TRIM im sicheren Pattern; vor 2017 als LTRIM(RTRIM(…))-Fallback). Kein Sample-Datensatz nötig … Weiterlesen