Die 6 Dimensionen der Datenqualität, erklärt

Vollständigkeit, Eindeutigkeit, Gültigkeit, Konsistenz, Genauigkeit und Aktualität — was jede Dimension bedeutet, ein Beispielverstoß und die Prüfung, die ihn abfängt.

· 8 min read

Die sechs Dimensionen der Datenqualität sind Vollständigkeit, Eindeutigkeit, Gültigkeit, Konsistenz, Genauigkeit und Aktualität. Jede benennt eine eigene Art, auf die Daten falsch sein können, und zusammen bilden sie den Standardrahmen, um den Zustand eines Datasets zu beschreiben, zu messen und zu berichten. Eine Dimension ist keine Prüfung — sie ist eine Kategorie von Prüfungen, und genau das macht sie nützlich: Eine einzelne scheiternde Regel sagt Ihnen, dass eine Spalte kaputt ist, während die Abdeckung nach Dimension Ihnen sagt, ob Sie überhaupt auf die richtigen Fehlerarten achten.

Der Rahmen stammt aus der Literatur zum Datenmanagement (DAMA-DMBOK und das DAMA-UK-Papier zu den Dimensionen sind die üblichen Referenzen) und ist verbreitet genug, dass ein Abdeckungsbericht über Teams und Werkzeuge hinweg ungefähr dasselbe bedeutet. Manche Taxonomien benennen eine Dimension um — Konformität statt Gültigkeit, Freshness statt Aktualität —, aber die sechs unten sind der Arbeitssatz.

Überblick

DimensionFrage, die sie beantwortetBeispielprüfung
VollständigkeitSind die erwarteten Daten tatsächlich da?nullCount auf Pflichtspalten = 0
EindeutigkeitErscheint jedes Ding der realen Welt genau einmal?duplicateCount auf dem Geschäftsschlüssel = 0
GültigkeitEntspricht jeder Wert seinem erlaubten Format oder seiner erlaubten Menge?validValues, regex, between
KonsistenzStimmen zusammengehörige Werte miteinander überein?referentialIntegrity, spaltenübergreifendes SQL
GenauigkeitBilden die Werte die reale Welt korrekt ab?Abgleich mit einer verlässlichen Quelle
AktualitätSind die Daten aktuell genug, um nützlich zu sein?freshness auf dem Ladezeitstempel

1. Vollständigkeit

Definition. Vollständigkeit misst, ob alle Daten vorhanden sind, die vorhanden sein sollten — auf Wertebene (keine NULL-Werte in Pflichtfeldern), auf Datensatzebene (keine fehlenden Zeilen) und auf Dataset-Ebene (keine fehlenden Partitionen).

Beispielverstoß. Ein nächtlicher Ladevorgang bricht auf halbem Weg ab. Jede gelandete Zeile ist für sich genommen einwandfrei, aber customer_id ist bei 4 % der Bestellungen NULL, weil der Join gegen eine Kundentabelle lief, die noch nicht aktualisiert war. Es wurde kein Fehler ausgelöst; die Zeilen tragen schlicht NULL-Werte.

Die Prüfung. Zählen Sie die NULL-Werte in jeder Pflichtspalte und die Zeilen gegen eine erwartete Untergrenze:

SELECT
    count(*)                                      AS row_count,
    count(*) FILTER (WHERE customer_id IS NULL)   AS missing_customer,
    count(*) FILTER (WHERE order_id IS NULL)      AS missing_order_id
FROM sales.orders
WHERE created_at >= current_date - 1;

Prüfungen auf die Zeilenzahl sind die unterschätzte Hälfte der Vollständigkeit: Eine NULL-Prüfung auf einer Tabelle, die überhaupt keine Zeilen erhalten hat, besteht mit Bravour.

2. Eindeutigkeit

Definition. Eindeutigkeit misst, ob jede Entität der realen Welt genau einmal repräsentiert ist. Das umfasst sowohl exakte Duplikate eines Schlüssels als auch Beinahe-Duplikate, die dieselbe Entität unter abweichenden Werten abbilden.

Beispielverstoß. Ein Backfill wird erneut ausgeführt, ohne vorher zu truncaten, und jede Bestellung der letzten sieben Tage existiert nun zweimal. Nichts ist NULL, kein Wert liegt außerhalb seines Bereichs, und jede nachgelagerte Kennzahl ist falsch.

Die Prüfung. Zählen Sie Schlüsselwerte, die mehr als einmal vorkommen:

SELECT count(*) AS violations
FROM (
    SELECT order_id
    FROM sales.orders
    WHERE order_id IS NOT NULL
    GROUP BY order_id
    HAVING count(*) > 1
) dupes;

Ein Unique Index würde das bereits beim Schreiben verhindern, aber Analysetabellen haben selten einen: CREATE TABLE AS SELECT überträgt keine Constraints, ein neu gebautes dbt-Modell hat also nichts, was seinen Schlüssel erzwingt. Die Duplikatprüfung ist das Einzige, was diese Lücke schließt.

3. Gültigkeit

Definition. Gültigkeit — auch Konformität genannt — misst, ob jeder Wert dem Format, dem Typ, dem Bereich oder der erlaubten Menge entspricht, die für sein Feld definiert sind. Sie ist eine syntaktische Eigenschaft: Ein gültiger Wert ist wohlgeformt, was nicht bedeutet, dass er korrekt ist.

Beispielverstoß. Eine neue vorgelagerte Integration beginnt, "COMPLETE" in eine status-Spalte zu schreiben, deren Konsumenten auf 'pending', 'paid', 'shipped' und 'refunded' verzweigen. Jedes nachgelagerte CASE fällt in seinen ELSE-Zweig, und die Bestellungen verschwinden klammheimlich aus dem Funnel-Report.

Die Prüfung. Testen Sie Zugehörigkeit, Muster und Bereich:

SELECT count(*) AS violations
FROM sales.orders
WHERE status IS NOT NULL
  AND status NOT IN ('pending', 'paid', 'shipped', 'refunded');

Die Absicherung mit IS NOT NULL ist keine Dekoration. Die dreiwertige Logik von SQL löst NULL NOT IN (...) zu NULL auf statt zu true; ein NULL-Status erfüllt die WHERE-Klausel also nie und erreicht die Zählung nie. Lassen Sie die Absicherung weg, und eine Spalte, die überhaupt nicht mehr befüllt wird, erscheint als vollkommen gültig — weshalb Gültigkeit und Vollständigkeit als getrennte Regeln gemessen werden müssen und nicht in einer Abfrage zusammenfallen dürfen.

4. Konsistenz

Definition. Konsistenz misst, ob zusammengehörige Werte übereinstimmen — über Spalten einer Zeile, über Tabellen einer Datenbank oder über Systeme hinweg. Sie umfasst referenzielle Integrität, spaltenübergreifende Logik und den systemübergreifenden Abgleich.

Beispielverstoß. Ein unvollständiges Neuladen hinterlässt 12.000 Bestellungen, deren customer_id in der Kundentabelle nicht existiert. Jede Zeile ist für sich vollständig, eindeutig und gültig — und unsichtbar, bis der Inner Join eines Dashboards sie stillschweigend verwirft und der Umsatz um 3 % zu fallen scheint.

Die Prüfung. Verwaiste Fremdschlüssel und unmögliche Feldkombinationen:

SELECT count(*) AS orphans
FROM sales.orders o
LEFT JOIN sales.customers c ON o.customer_id = c.id
WHERE o.customer_id IS NOT NULL
  AND c.id IS NULL;

Spaltenübergreifende Konsistenz ist dieselbe Idee innerhalb einer Tabelle: shipped_at >= ordered_at, eine Rückerstattung, die nie die zugehörige Zahlung übersteigt, Positionen, die in der Rechnungssumme aufgehen. Sie kodieren fachliche Invarianten und sind genau die Prüfungen, die echte Geschäftsfehler abfangen statt bloßer Installationsfehler.

5. Genauigkeit

Definition. Genauigkeit misst, ob die Werte das Ding der realen Welt, auf das sie sich beziehen, korrekt beschreiben. Sie ist die schwierigste Dimension, denn ihre Überprüfung erfordert eine verlässliche Quelle außerhalb des Datasets.

Beispielverstoß. Die Adresse einer Kundin ist wohlgeformt, vollständig, eindeutig und in sich konsistent — und gehört zu dem Gebäude, aus dem sie vor zwei Jahren ausgezogen ist. Jede syntaktische Prüfung besteht; das Paket geht an die falsche Stelle.

Die Prüfung. Drei Ansätze, in absteigender Strenge:

SELECT count(*) AS violations
FROM sales.orders
WHERE total_amount IS NOT NULL
  AND (total_amount < 0 OR total_amount > 100000);

Seien Sie ehrlich, was den Unterschied angeht: Plausibilitätsgrenzen sind eine Gültigkeitsprüfung im Gewand der Genauigkeit. Sie fangen Ausreißer ab, keine Fehler.

6. Aktualität

Definition. Aktualität — oft Freshness genannt — misst, ob die Daten aktuell genug für die Entscheidung sind, die sie stützen. Sie hat zwei Hälften: Latenz (wie lange es dauert, bis ein Ereignis abfragbar ist) und Gegenwärtigkeit (wie alt die neueste Zeile jetzt ist).

Beispielverstoß. Eine Pipeline bleibt am Freitagabend stehen. Das Dashboard am Montag rendert einwandfrei, jede Prüfung besteht, und jede Zahl stammt von Freitag. Keine Regel über den Inhalt der Daten kann das erkennen, denn der Inhalt ist in Ordnung.

Die Prüfung. Vergleichen Sie den neuesten Zeitstempel mit einem Schwellenwert:

SELECT count(*) AS violations
FROM sales.orders
WHERE created_at < now() - interval '24 hours';

Bevorzugen Sie einen zeitzonenbewussten Zeitstempeltyp — ein reines timestamp vergleicht gegen die Zeitzone, die die Session gerade gesetzt hat, dieselbe Prüfung gibt zwei Clients also unterschiedliche Antworten. Und leiten Sie den Schwellenwert aus der Entscheidung ab, nicht aus dem Zeitplan: Eine stündlich geladene Tabelle, die nur einen Wochenbericht speist, braucht keinen stündlichen Alarm.

Dimensionen nutzen, statt sie nur zu benennen

Der Rahmen zahlt sich aus, sobald Sie hundert Regeln haben. Einzeln sind sie eine Liste; nach Dimension gruppiert werden sie zu einer Abdeckungsmatrix, und die Lücken in dieser Matrix sind meist aufschlussreicher als jede einzelne scheiternde Prüfung.

Die typische Lücke: dichte Abdeckung bei Vollständigkeit und Gültigkeit, weil diese Prüfungen leicht zu schreiben sind, und fast nichts bei Konsistenz oder Aktualität, weil diese Nachdenken über Beziehungen und Zeitpläne erfordern. Das Team ist am Ende gut gegen die Fehler gewappnet, die billig zu erkennen sind, und ungeschützt gegen die, die ein Dashboard umreißen. Daraus folgen zwei Praktiken:

  1. Versehen Sie jede Regel mit ihrer Dimension und berichten Sie die Abdeckung je Dataset. Eine kritische Tabelle ohne eine einzige Aktualitätsregel ist ein Befund, selbst wenn jede Prüfung grün ist.
  2. Gewichten Sie nach Kritikalität, nicht nach Tabellenzahl. Vollständige Abdeckung über alle sechs Dimensionen auf Ihren zehn meistgenutzten Datasets schlägt eine Teilabdeckung auf vierhundert.

Der Open Data Contract Standard macht die Dimension zu einem erstklassigen Feld jeder Qualitätsregel — und genau das erlaubt es, Abdeckung zu berechnen statt zu schätzen. Catalyst modelliert dieselben sechs Dimensionen direkt: Jede Regel trägt eine, und die Ergebnisse verdichten sich zu einer Abdeckungsansicht je Dataset, neben den Details zu pass und fail.

Siehe auch: was Datenvalidierung ist, was ein Data Contract ist und den Leitfaden zur Datenvalidierung für das SQL und die Zeitplanung.

Häufig gestellte Fragen

Was sind die 6 Dimensionen der Datenqualität?

Vollständigkeit (sind die erwarteten Daten vorhanden), Eindeutigkeit (erscheint jede Entität genau einmal), Gültigkeit (entspricht jeder Wert seinem erlaubten Format oder seiner erlaubten Menge), Konsistenz (stimmen zusammengehörige Werte überein), Genauigkeit (beschreiben die Werte die reale Welt korrekt) und Aktualität (sind die Daten aktuell genug, um nützlich zu sein).

Gibt es nur sechs Datenqualitätsdimensionen?

Sechs sind der übliche Arbeitssatz, aber die Taxonomien unterscheiden sich. Das Papier von DAMA UK listet sechs; andere Rahmenwerke ergänzen Integrität, Präzision, Relevanz oder Zugänglichkeit. Die genaue Anzahl ist weit weniger wichtig, als sich auf einen Satz festzulegen und ihn konsequent zu verwenden, damit Abdeckungsberichte über Teams hinweg dasselbe bedeuten.

Was ist der Unterschied zwischen Gültigkeit und Genauigkeit?

Gültigkeit ist syntaktisch: Der Wert ist wohlgeformt und gehört zur erlaubten Menge oder zum erlaubten Bereich. Genauigkeit ist semantisch: Der Wert beschreibt das Ding der realen Welt korrekt. Der klassische harte Fall ist der gültige, aber ungenaue Wert — eine korrekt formatierte Anschrift für das Gebäude, aus dem die Kundin vor zwei Jahren ausgezogen ist, besteht jede Gültigkeitsprüfung und ist trotzdem falsch.

Welche Datenqualitätsdimension ist die wichtigste?

Das hängt von der Entscheidung ab, die die Daten stützen, aber in der Praxis verursachen Aktualität und Vollständigkeit die meisten Vorfälle: Eine stehengebliebene Pipeline oder ein unvollständiger Ladevorgang bricht alles Nachgelagerte auf einmal, während jeder einzelne Wert korrekt bleibt. Genauigkeit zählt am meisten für Zahlen, die nach außen berichtet werden, und sie ist die einzige Dimension, die eine verlässliche Quelle außerhalb des Datasets erfordert.

Wie misst man Datenqualitätsdimensionen?

Ordnen Sie jede Regel einer Dimension zu, formulieren Sie sie als Abfrage, die eine Anzahl von Verstößen zurückgibt, und berichten Sie sowohl die Bestehensquote je Regel als auch die Abdeckung je Dimension. Die Abdeckung ist der Teil, den Teams auslassen: Zu wissen, dass achtundneunzig von hundert Prüfungen bestanden haben, ist deutlich weniger nützlich als zu wissen, dass keine einzige der hundert eine Aktualitätsprüfung war.