Zur Startseite
Fallstudie · Bachelorarbeit

Datenqualität messbar machen

Meine Bachelorarbeit „Kennzahlen zur Messung der Datenqualität“ (Note 1,3), noch einmal durchgerechnet: mit über einer Million echter, unbereinigter Handelsdaten aus einem öffentlichen Datensatz.

1,07 Mio.Rechnungspositionen analysiert
8Attribute profiliert
23 %Positionen ohne Kunde
97 %„vollständig“ bei gleicher Gewichtung

Die Idee der Arbeit

Entscheidungen werden auf Basis von Daten getroffen, aber fehlerhafte Daten fallen oft erst ganz am Ende auf: im Data Warehouse, wenn eine Kennzahl nicht stimmt. Meine Arbeit hat untersucht, wie man Datenqualität vorher messbar macht.

Der Weg: Qualitätskriterien aus der Literatur auswählen, sie über Metriken in Prozentwerte übersetzen und die nötigen Fakten per Data Profiling direkt aus der Datenbank ziehen. In der Arbeit habe ich das an den Kundenstammdaten eines Industrieunternehmens durchgeführt. Hier zeige ich dasselbe Vorgehen an öffentlichen Daten.

Woran man Datenqualität erkennt

Glaubwürdigkeit

KorrektheitKonsistenzZuverlässigkeit

Nützlichkeit

VollständigkeitGenauigkeitZeitnäheRedundanzfreiheitRelevanz

Interpretierbarkeit

EinheitlichkeitEindeutigkeitVerständlichkeit

Schlüsselintegrität

SchlüsseleindeutigkeitReferentielle Integrität

Taxonomie nach Hinrichs (2002). Datenqualität ist immer mehrdimensional und hängt vom Zweck ab, für den die Daten genutzt werden.

Data Profiling in vier Schritten

1

Integration

Daten aus dem Quellsystem in einen eigenen Bereich kopieren, damit die Analyse das System nicht belastet und der Stand eingefroren ist.

2

Analyse

Attribute, Tupel und Relationen mit Standardverfahren untersuchen: Datentyp, Wertebereich, Muster, Domänen, NULL-Werte, Schlüssel, Beziehungen.

3

Ergebnisdarstellung

Befunde so aufbereiten, dass die Fachseite sie versteht, und daraus Kennzahlen berechnen.

4

Bewertung

Mit der Fachseite klären, was wirklich ein Fehler ist, und Ursachen beheben. Danach beginnt der Zyklus von vorn.

Die Metrik: Vollständigkeit auf drei Ebenen

Nach Hinrichs wird Vollständigkeit „bottom up“ aufgebaut. Ein Wert zählt als fehlend, wenn er NULL ist oder etwas, das fachlich dasselbe bedeutet, etwa „UNDEFINED“, „?“ oder eine 0 als Platzhalter.

(1) AttributwertQ(w) = 0 falls w ≙ NULL, sonst 1
(2) Tupel (Datensatz)Q(t) =Σ Q(t.Ai) · giΣ gi
(3) Relation (Tabelle)Q(T) =Σ Q(ti)|T|

g ist die Gewichtung eines Attributs zwischen 0 und 1, je nachdem, wie wichtig es für den Anwendungsfall ist.

Übertragen auf einen öffentlichen Datensatz

Online Retail II enthält alle Rechnungspositionen eines britischen Online-Händlers aus zwei Jahren, unbereinigt und mit allen Macken echter Systeme. Das ist der gleiche Datentyp wie in meiner Arbeit: Kunden- und Verkaufsdaten. Die Auswertung folgt Schritt für Schritt dem Vorgehen aus Kapitel 4.

1.067.371 Positionen53.628 Rechnungen5.942 Kunden5.305 Artikel43 Länder2009-12 – 2011-12

Die Daten zum Anfassen

16 echte Zeilen aus dem Datensatz, bewusst so ausgewählt, dass jeder Befund mindestens einmal vorkommt. Wähle eine Prüfung oder klicke auf eine markierte Zelle, um zu sehen, was dahintersteckt.

Fall
Invoice
Rechnungsnummer
StockCode
Artikelnummer
Description
Artikelbezeichnung
Quantity
Menge
InvoiceDate
Rechnungsdatum
Price
Stückpreis
Customer ID
Kundennummer
Country
Land
Unauffällig4894348504815CM CHRISTMAS GLASS BALL 20 LIGHTS1201.12.09 07:456,9513085United Kingdom
StornoC48944922087PAPER BUNTING WHITE LACE-1201.12.09 10:332,9516321Australia
Ohne Kundennummer48952585226CBLUE PULL BACK RACING CAR101.12.09 11:490,55NULLUnited Kingdom
Land „EIRE“48952035751CPURPLE CURRENT CANDLE RING1201.12.09 11:410,7514911EIRE
Land unbekannt49486084832ZINC WILLIE WINKIE CANDLE STICK519.01.10 11:010,8512470Unspecified
Porto als Artikel489439POSTPOSTAGE301.12.09 09:2818,0012682France
Notiz statt Name48946371477short-24001.12.09 10:520,00NULLUnited Kingdom
„?“ als Name49502721314?1.14620.01.10 13:480,00NULLUnited Kingdom
Geisterzeile48952121646NULL-5001.12.09 11:440,00NULLUnited Kingdom
AusbuchungA506401BAdjust bad debt129.04.10 13:36-53.594,36NULLUnited Kingdom
Duplikat48951721912VINTAGE SNAKES & LADDERS101.12.09 11:343,7516329United Kingdom
Duplikat48951721912VINTAGE SNAKES & LADDERS101.12.09 11:343,7516329United Kingdom
Gleiche Nr., anderer Name49536215058ABLUE WHITE SPOTS GARDEN PARASOL224.01.10 12:127,9515727United Kingdom
Gleiche Nr., anderer Name53820015058ABLUE POLKADOT GARDEN PARASOL110.12.10 11:117,9517912United Kingdom
Gleicher Kunde, anderes Land49736322055MINI CAKE STAND HANGING STRAWBERY809.02.10 09:411,6512370Austria
Gleicher Kunde, anderes Land53882685123AWHITE HANGING HEART T-LIGHT HOLDER6414.12.10 12:582,5512370Cyprus

Tipp: Auch die Befund-Karten weiter unten markieren die passenden Zellen.

Attributebene

Tupelebene

Relationsebene

Vollständigkeit je Attribut

Auf Attributebene sieht fast alles sehr gut aus. Mit einer Ausnahme, und genau die ist für Kundenanalysen entscheidend.

Rechnungsnummer
100,00 %
Artikelnummer
100,00 %
Artikelbezeichnung
99,51 %
Menge
100,00 %
Rechnungsdatum
100,00 %
Stückpreis
99,42 %
Kundennummer
77,23 %
Land
99,93 %

Selbst ausprobieren: Gewichtung kann Lücken verdecken

Das war die wichtigste Erkenntnis meiner Arbeit. Je nachdem, wie die Attribute gewichtet werden, ergibt derselbe Datenbestand eine ganz andere Kennzahl. Verschiebe die Regler oder wähle einen Anwendungsfall.

99,5 %
Vollständigkeit mit deiner Gewichtung
97,0 %
Vollständigkeit gleichgewichtet
77,2 %
Schwächstes Attribut: Kundennummer

Eine Kennzahl über 95 %, obwohl fast jede vierte Position keinen Kunden hat: Das ist der Effekt, vor dem die Arbeit warnt. Deshalb immer auch auf Attributebene schauen.

So rechnet die Metrik

Dieselben Zeilen, jetzt bewertet: 1 = vorhanden, 0 = fehlt (inklusive Platzhalter). Rechts steht die Vollständigkeit Q(t) jeder Zeile mit den Gewichten von oben. Klicke auf eine Zeile, um den Rechenweg zu sehen.

Fall
Invoice
Rechnungsnummer
StockCode
Artikelnummer
Description
Artikelbezeichnung
Quantity
Menge
InvoiceDate
Rechnungsdatum
Price
Stückpreis
Customer ID
Kundennummer
Country
Land
Q(t)
Unauffällig111111111,00
Storno111111111,00
Ohne Kundennummer111111010,98
Land „EIRE“111111111,00
Land unbekannt111111100,95
Porto als Artikel111111111,00
Notiz statt Name110110010,75
„?“ als Name110110010,75
Geisterzeile110110010,75
Ausbuchung111111010,98
Duplikat111111111,00
Duplikat111111111,00
Gleiche Nr., anderer Name111111111,00
Gleiche Nr., anderer Name111111111,00
Gleicher Kunde, anderes Land111111111,00
Gleicher Kunde, anderes Land111111111,00
Q(T) dieser Stichprobe = Σ Q(t) / 160,95
Rechenweg für „Notiz statt Name“
Q(t) = (1·1,0 + 1·1,0 + 0·0,3 + 1·1,0 + 1·1,0 + 0·1,0 + 0·0,1 + 1·0,3) / 5,7 = 0,75

Jede 0 oder 1 wird mit dem Gewicht ihres Attributs multipliziert (Reihenfolge wie in der Tabelle), die Summe durch die Summe der Gewichte geteilt.

Die Stichprobe ist absichtlich voller Problemfälle. Die großen Kennzahlen oben gelten für den gesamten Datensatz.

Was ich daraus mitnehme

  • Datenqualität lässt sich nicht allgemein festlegen, sondern nur für einen Zweck. Für eine Umsatzanalyse sind diese Daten gut, für eine Kundenanalyse nicht.
  • Eine einzelne Kennzahl reicht nicht. Erst mehrere Kriterien und mehrere Ebenen zusammen ergeben ein ehrliches Bild.
  • Data Profiling findet nicht nur Fehler, sondern auch Hinweise auf ihre Ursache, zum Beispiel die Geisterzeilen oder Stornos im Schlüssel.

Was ich heute zusätzlich machen würde

  • Die Prüfungen als Regeln automatisieren, damit sie bei jedem Datenimport laufen, wie heute in meinen Migrationsprojekten.
  • Weitere Kriterien wie Konsistenz und Zeitnähe messen, nicht nur Vollständigkeit.
  • Auffällige Muster mit Machine Learning finden lassen, statt jede Regel vorher selbst zu kennen. Das ist ein Thema meines Masters.

Quellen & Hinweise

Datensatz: Chen, D. (2019). Online Retail II [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5CG6D (CC BY 4.0).

Bachelorarbeit: Ackermann, P. (2021). Kennzahlen zur Messung der Datenqualität. Europäische Fachhochschule (heute CBS International Business School). Note 1,3.

Die Originalarbeit enthält vertrauliche Unternehmensdaten und ist deshalb nicht öffentlich. Alle Zahlen auf dieser Seite stammen aus dem öffentlichen Datensatz.