Data Profiling–Teil 1

profiler
Vor einiger Zeit hatte ich hier eine Sneak Preview unseres Produktes datenfabrik.profiler kurz vor der SQLBits veröffentlicht, auf der wir eine frühe Version unseres Produktes zum ersten mal einem etwas größeren Publikum vorgestellt haben.

In den nächsten Wochen werden wir nun eine erste öffentliche Beta Version des datenfabrik.profilers veröffentlichen. Zeit also, um mal ein bisschen in die Thematik des Data Profiling einzusteigen.

 

Data Profiling

Data Profiling ist ein wesentlicher, aber leider häufig vernachlässigter Schritt,  mit dem jedes Daten-Projekt beginnen sollte. Jede ERP Implementierung, jedes CRM Deployment, jede DW Entwicklung und jede Neuentwicklung sollte eigentlich mit einem Data Profiling starten. Die einfache Grundlage dieses Vorgehens ist, dass man nicht planen kann, was man nicht kennt oder nicht abschätzen kann. Gerade bei Datenintegrationsprojekten –  wie z.B. der Data Warehouse Entwicklungen – ist die Datenquelle häufig die größte unbekannte.

Studien haben ergeben, dass ca. 75% aller Datenintegrationsprojekte aus dem Ruder laufen oder sogar fehlschlagen. Viele Großunternehmen haben mehrere Millionen Euro in entsprechende Projekte investiert, nur um festzustellen, das die Quelldaten nicht das geplante Zielsystem unterstützen.

Die bekannten Beispiele von Datenqualitätsprobleme sind in der Kundenkommunikation, z.B. durch fehlerhafte Adressen, fehlerhaften Telefonnummern oder doppelte Kundendaten zu finden. Aber auch in Artikelstammdaten, Bestellinformationen oder in Geodaten bestehen häufig Datenfehler. In einigen Fällen sind diese Fehler leider nicht direkt messbar, können aber später in der Summe fehlerhafte Ergebnisse hervorrufen, auf denen dann im schlechtesten Fall auch fehlerhafte Geschäftsentscheidungen getroffen werden.

Datenmodelle oder Satzaufbauten bei Textdateien liefern theoretische Informationen um Datenstrukturen zu verstehen. Häufig unterscheiden sich jedoch die realen Daten von dem, was theoretisch erwartet wurde oder geliefert werden sollte; die Qualität der Metadaten ist im Allgemeinen viel schlimmer als die Qualität der Daten. Nicht selten existieren in System Spalten die zweckentfremdet wurden und somit einen anderen Inhalt aufweisen, als der eigentliche Name vermuten lässt.

Hinzukommt, das in externen Systemen häufig andere (oder auch teilweise gar keine) Regeln und Techniken eingesetzt werden, die die Datenqualität sichern. Diese Fehler müssen innerhalb eines Unternehmens oder Projektes beschrieben und quantifizierbar gemacht werden. In Datenintegrationsprojekten werden häufig Line Sequential Dateien, CSV Dateien oder andere Legacy Systeme verwendet, bei denen zwischen Definition und Realität eine größere Lücke klafft – allerdings ist dies oftmals auch der Antrieb für entsprechende Projekte.

 

image

 

Das Data Profiling ist dabei ein Prozess zur Entwicklung von Informationen über Daten anstatt Informationen aus Daten. Es wird vor dem eigentlichen beheben der Fehler, dem Cleansing oder den Enrichment Prozessen eingesetzt und analysiert Daten aus den verschiedensten Quellen und bewertet diese mit vordefinierten Informationen und Statistiken. Dabei kommen unterschiedliche Verfahren, Regeln und Algorithmen zum Einsatz, die zum einen Datentypen-basierte und statistische Untersuchungen durchführen zum anderen aber auch Domänenspezifische Analysen erstellen können. Mit dem Data Profiling wird zur vorhandenen Dokumentation der Metadaten sozusagen eine Inhaltsanalyse auf Metaebene erstellt. Ziel des Data Profiling ist es, sich einen systematischen Überblick über die Qualitätsprobleme zu verschaffen um damit Geschäftsprozesse auf eine verlässliche Datenbasis zu stellen. Es liefert Projektmitarbeitern einen Überblick über die Qualitätsprobleme die in ihrer Datenwelt existieren und wo sie gezielt mit Verbesserungen ansetzen müssen.

Regeln die im Data Profiling zum Einsatz kommen, sind z.B. Key-Candidate Profile, zum erkennen von Spalten mit möglichen Schlüsselwerten, einfache Häufigkeitsverteilungen, funktionale Abhängigkeiten oder eine Date Mask Analysis. Letztere dient zum Beispiel zum erkennen von Datumsformaten wie 20110727 oder 27/07/2011, die häufig in CSV/TXT Extrakten verwendet werden. Weitere Regeln wie Length Distribution oder Pattern Analysis helfen dabei, den Inhalt einzelner Daten genauer zu prüfen und zu verstehen. Mit Hilfe dieser Analysen lassen sich Korrekturmaßnahmen einleiten und später einheitliche Business Regeln erstellen. Ein gutes Verständnis der Daten, ihrer Qualität und der kritischen Faktoren innerhalb der Daten sind wichtig, um Datenintegrationsprojekte erfolgreich umzusetzen.

Mit einem guten Data Profiling werden aber nicht nur offensichtliche Fehler wie 31.02.1976 oder 03.03.0192 in Datumsfeldern aufgedeckt, sondern es können z.B. auch Ausreißer innerhalb der Daten aufgedeckt werden.


image

 

Die aus dem Data Profiling erkannten und erstellten Business Regeln sollten später in ein Data Monitoring überführt werden, um regelmäßig die Datenqualität im eigenen System und vor allem beim weiteren Laden von Daten aus den Fremdsystemen zu beobachten und ggf. natürlich auch darauf zu reagieren. Zwar sollten innerhalb eines Integrationsprojekts Fehler direkt behoben werden, aber es können auch Werte oder Fehler im Betrieb auftreten, die vorher nicht erkannt wurden oder – schlimmer noch – vorher nicht vorhanden waren. Ein Beispiel aus einem Kundenprojekt ist das unangekündigte ändern eines Standardwertes in einem Fremdsystem von False auf True durch ein Update, wodurch ca. 60% der Neukunden als ungültig erklärt wurden.

 

Data Profiling im SQL Server

Mit den SQL Server 2008 hat Microsoft bereits einen Data Profiling Task in die SQL Server Integration Services integriert. Der Task – der innerhalb der Ablaufsteuerung zur Verfügung steht – verfügt zur Analyse von Daten über die folgenden Regeln:

  • Funktionales Abhängigkeitsprofil
  • Kandidatenschlüsselprofil
  • NULL-Verhältnis
  • Spaltenmusterprofil
  • Spaltenstatistikprofil
  • Verteilungsprofil für Spaltenlänge
  • Verteilungsprofil für Spaltenwert
  • Wertinklusionsprofil

 

Die Daten aus dem Task werden in einer XML Datei gespeichert und können mit dem Data Profile Viewer später analysiert werden. Es existieren zwar einige Beispiele wie man diese XML Datei auch wieder mit den Integration Services einlesen und dann verarbeiten und somit auch auf entsprechende Werte/Ausreißer reagieren kann, dies ist jedoch recht viel Handarbeit.

Neben den oben bereits erwähnten Blog-Eintrag zum Data Profiling Task gibt es auch eine sehr gute Serie von Jamie Thomson zu diesem Task.

Andere Anbieter im Bereich Data Profiling wie Informatica, Ataccama oder Talend bieten häufig einen umfangreicheren Funktionsumfang. Zwar wird Microsoft im Rahmen der Data Quality Services (anscheinend) ein weiteres Data Profiling in den SQL Server 2012 integrieren, den genauen Funktionsumfang muss ich aber noch einmal genauer unter die Lupe nehmen. Dazu werde ich in einem späteren Blogbeitrag zum SQL Server 2012 und den DQS etwas detailliertes schreiben.