Dublettensuche mit Microsoft DQS – Teil 1

 

dqs

Die Data Quality Services, die seit der SQL Server Version 2012 mit zum Umfang der Business Intelligence und Enterprise Edition gehören, bieten unter anderem auch die Möglichkeit einer Dublettensuche.

Da die DQS sich durch verschiedene Projekte bei mir immer mehr zu einer Standard Anwendung entwickeln und die Dublettensuche schon länger zu meinen Steckenpferden gehört, möchte ich im folgenden Beitrag näher auf die Dublettenusche innerhalb der Data Quality Services eingehen.

Allgemeine Grundlagen zur Dublettensuche habe ich vor einiger Zeit in dem Artikel Fuzzy Search Teil 1 – Doppelte Datensätze suchen, finden und nicht finden (wollen) näher beschrieben.

Aufbau einer Matching Policy

Um Daten mit den Data Quality Services auf Dubletten zu prüfen, muss zuerst eine Knowledge Base aufgebaut werden. Diese muss für diesen Anwendungsfall entsprechende Domains sowie eine Matching Policy enthalten. Auf dem genauen Aufbau der Domains werde ich in einem späteren Artikel noch einmal näher eingehen. Hier sei nur kurz erwähnt, dass ich über das Domain Management die Domains Vorname, Nachname, Strasse, Plz und Ort erstellt habe.

Im ersten Schritt zum Erstellen der Matching Policy, müssen Beispieldaten aus einer bestehenden Datenbank geladen werden und auf die zuvor erstellte Domain gemappt werden.

image

An dieser Stelle ist es ratsam, sich zuvor klassische Fälle von Dubletten die man in seinem Datenbestand identifizieren möchte zu generieren oder noch besser aus seinem realen Datenbestand zu extrahieren. Der Zugriff auf diese Sample Daten kann sowohl auf einer Tabelle oder Sicht innerhalb des SQL Server, wie auch auf einer Excel Datei erfolgen.

Nach dem Mappen der Felder zu den Domains gelangt man über die Schaltfläche Next zum erstellen der eigentlichen Regeln.

Hier sollte man sich als erstes darüber im klaren sein, welcher Score mindestens erreicht werden soll, um zwei oder mehr Datensätze als Dublette zu identifizieren. Der im Feld Min. matching score einzustellende Wert kann von 80 – 100% gehen.

Danach wird die Gewichtung der einzelnen Domains untereinander definiert.

image

In oberen Beispiel sind die Domains Vorname, Nachname, Strasse und Ort (letztere hier im Bild nicht zu sehen) alle mit jeweils 25% gleich gewichtet worden. Die Gewichtung einer Domain kann zwischen 10 und 100% liegen, muss in der Summe über alle Domains aber immer 100% ergeben. Aus dieser Gewichtung und den einzelnen Vergleichen der Domains zwischen zwei Datensätzen wird der Gesamtscore berechnet, der, wie oben beschrieben, über das Feld Min. matching score definiert wird.

Mit Prerequisite kann definiert werden, ob zwei Domains immer zu 100% übereinstimmen müssen. Diese Domains werden aus der Berechnung für den Gesamtscore automatisch herausgenommen. Über die Spalte Similiarity lässt sich definieren ob die Ergebnisse Exakt oder Similar sein sollen, also zu 100% übereinstimmen oder über einen entsprechenden phonetischen Algorithmus nur ähnlich sein sollen.

Ist eine Domain als Prerequisite gekennzeichnet, so müssen zwei Datensätze für diese Domain immer zu 100% übereinstimmen um eine Dublette darzustellen. Ist eine Domain als Exakt gekennzeichnet, müssen diese innerhalb des Vergleichs zwar auch zu 100% übereinstimmen, das Ergebnis fließt aber über die Gewichtung mit in den Gesamtscore ein, wodurch auch Datensätze bei denen zwei Domains nicht zu 100% übereinstimmen eine Dublette darstellen können.

Enthält die KnowledgeBase nicht nur einfache Domains vom Typ String, sondern auch Composite Domains oder ggf. andere Datentype, so lassen sich weitere Einstellungen vornehmen.

Bei einer Composite Domain, lässt sich die Gewichtung entweder für die CD definieren, oder aber für eine Domain innerhalb dieser. Hier muss auch die Regel, dass jede Domain eine minimale Gewichtung von 10% haben muss nicht eingehalten werden.

image

Bei Integer, Decimal und Datums Werten kann definiert werden, wie weit die entsprechenden Werte auseinander liegen. So kann bei einem Datum z.B. genau bestimmt werden, dass dieses max. 5 Jahre Abstand haben darf. Bei reinen Zahlen kann dies zusätzlich auch über einen Ähnlichkeits-Schwellenwert definiert werden.

image

Ist die erste Matching Rule erstellt, so kann diese direkt auf den Beispiel Daten angewendet werden. Die Ergebnisse der Suche werden als Dublettengruppen im unteren Bereich des aktuellen Fensters des DQS Client inkl. des Scores ausgegeben.

image

Über den Filter oberhalb der Ausgabe kann man sich sowohl die übereinstimmenden wie auch die nicht übereinstimmenden Treffer ausgeben lassen.

Die Ergebnisse im unteren Fenster können auf Wunsch auch noch detaillierter betrachtet werden. Über den rechten Mausklick auf einen der Datensätze kann man die Matching Score Details aufrufen, die für jeden Vergleich auf Domain Ebene den jeweiligen Score angeben.

image

Beim Erstellen der Matching Rules sollte nicht versuchen werden, eine Regel zu definieren, mit der möglichst viele oder sogar alle Dubletten gefunden werden. Dies erhöht zwangsläufig den Recall und senkt die Precision. Vielmehr sollten in den Beispiel-Daten unterschiedliche Arten von Dubletten definiert werden, wie z.B. gekürzte oder fehlende Vornamen, fehlerhafte Nachnamen, falsche PLZ usw. Da innerhalb der DQS beliebige viele Matching Rules erstellt werden können, sollte für jede einzelne dieser Gruppen auch eine eigene Matching Rule erstellt werden, die dann nahezu perfekt auf den jeweiligen Anwendungsfall abgestimmt ist. Treffen später die Datensätze A und B über die Regel 1 und B und C über die Regel 2, so werden diese Treffer zusammengefasst und A, B und C bilden eine gemeinsame Dublettengruppe.

Sind alle Regeln erstellt worden, können im nächsten Dialog alle Regeln zusammen auf die Beispiel-Daten angewendet werden. Die Ergebnisse werden wie bereits zuvor mit dem jeweiligen Score ausgegeben, erhalten aber zusätzlich noch eine farbige Kennzeichnung, über die das Ergebnis einer Regel zugeordnet werden kann.

image

Zusätzlich werden im unteren Bereich mit dem Profiler und den Matching Results noch kleine Statistiken ausgegeben, die einem für den Aufbau eines Regelwerkes weitere nützliche Zusatzinformationen liefern.

image


image

 

Ist man mit dem Ergebnis zufrieden, wird die Matching Policy mit Finish als Bestandteil der Knowledge Base publiziert und kann nun in verschiedenen Projekten innerhalb der DQS verwendet werden.

Bewertung der Ergebnisse

Ein guter Vergleich der Ergebnisse mit dem FuzzySearch Task der SSIS ist in dem Blog Beitrag DQS Matching Vs SSIS Fuzzy Grouping and Lookup von Jeremy Kashel zu finden. Eine sehr detaillierte Bewertung der Ergebnisse ist in dem Whitepaper What to Expect from DQS des Marktbegleiters HelpIT zu finden.

Aus meiner Sicht gibt es definitiv einige Dublettenarten, die mit der derzeitigen Version der DQS sehr schwer, wenn sogar gar nicht gefunden werden können, ohne nicht zeitgleich die True Negative in die höhe zu schrauben. Beispiele dafür sind z.B. Vor- und Nachname in einem Feld oder das Vorkommen von verdrehten Vor- und Nachnamen. Auch einige Schreibweisen die für den Menschen sehr nah beieinander liegen, werden von den DQS nicht erkannt. Hier könnte Microsoft für die Zukunft noch nachlegen (aber wir sind ja erst bei der Version 1).

Eine genaue Bewertung der Ergebnisse der Dublettenusche ist nicht ganz einfach, da die DQS mit dem Konzept der Domains und den dazugehörigen Domain Rules sowie der lernfähigen KnowledgeBase und der direkten Anbindung an den Marketplace, wesentlich mehr im Angebot haben, als eine reine Dublettensuche. Und wenn diese Funktionen im voraus richtig eingesetzt werden, so hat man ein extrem mächtiges Tool zu Bereinigung von Daten an der Hand und viele Fragestellungen, die normalerweise bei der Validierung von Ergebnissen einer Dublettensuche herangezogen werden, könnten sich mehr oder weniger in Luft auflösen.

Im zweiten Teil werde ich auf ein paar Ergebnisse bei der Dublettensuche und Möglichkeiten der vorherigen Korrektur durch die Domains und KB näher eingehen.

 

Mehr DQS bei den PASS Essentials und auf dem SQLSaturday #170

pass_deutschland_v2Wer mehr über die Möglichkeiten mit den Data Quality Services erfahren möchte, dem möchte ich zum einen die PASS Essentials Data Quality rulez! Die Data Quality Services in SQL Server 2012 am 31.08.2012 und den Vortrag Data Quality rulez! – DQS best practice auf dem SQLSaturday am 15.09.2012 empfehlen. Beide Vorträge werde ich zusammen mit MVP Oliver Engels (Twitter) halten. Beim PASS Essentials sei noch kurz darauf hingewiesen, dass am 30.08.2012 Sascha Lorenz ebenfalls in Bad Camberg das PASS Essential Master Data Management mit den SQL Server 2012 Master Data Services (MDS) halten wird. Wer sich also für Datenqualität, Stammdatenverwaltung usw. interessiert, kann zwei sehr spannende Tage zu diesem Thema erwarten.