Wenn du verschiedene Datenquellen zu einer einzigen Datenquelle zusammenführen möchtest, dann findest du hier eine grobe Beschreibung der dazu notwendigen Schritte. Im Wesentlichen teilt sich der Prozess in drei Phasen. Die erste Phase ist die Übersetzung der Daten aus den unterschiedlichen Quellen in eine einheitliche Struktur. In der zweiten Phase geht es darum, Einträge zu identifizieren, die die selbe Sache beschreiben. Darauf aufbauend können letztendlich diese Einträge zu einem zu einem integrierten Datensatz zusammengeführt werden. Diesen Prozess nennt man auch Daten- oder Informationsintegration.
Wie passen die Strukturen der Daten zusammen?
Häufig sind die Daten aus verschiedenen Quellen in unterschiedlichen Strukturen und auch Dateiformaten (z.B. JSON, XML, CSV). Der Einfachheit halber sind die Beispiele nur mit Tabellen (z.B. CSV) beschrieben. Somit ist der erste Schritt die Überführung der Daten in ein einheitliches Dateiformat und eine einheitliche Struktur. Zu diesem Zweck wird die Frage gestellt, welche Felder der Datenquellen entsprechen welchen Feldern in der Zielstruktur. Das kann entweder manuell oder automatisch gemacht werden. Das Ergebnis sollte aber immer von einem Experten überprüft werden.
Die Tabellen an der Seite zeigen vereinfachte Beispiele, wie solche zusammengehörigen Felder gefunden werden können. Im oberen Beispiel wird die Zuordnung mittels des Spaltenkopfes >Name< getroffen. Im unteren Beispiel ist das nicht zu hundert Prozent möglich, weil die Spalten unterschiedliche Namen haben. Hier können aber auch die Spalten über ihre Werte zueinander zugeordnet werden. Bei beiden Varianten bietet es sich an mit verschieden Metriken und Toleranzen zu arbeiten (z.B. Levenshtein-Distanz, Jaccard-Koeffizient). Natürlich kann man die Methoden kombinieren und auch die Strukturen mit einbeziehen.
Wurde schließlich eine Zielstruktur und eine Zuordnung der Felder gefunden, so können alle Daten in die Zielstruktur überführen. Dabei werden die Datensätze noch nicht zusammen gefasst. Sprich, die Anzahl der Datensätze bleibt gleich. Die Überzetzung kann beispielsweise mit kleinen Skripten (z.B. Python, JavaScript) gemacht werden.
Welche Einträge gehören zusammen?
Wenn Daten integriert werden, überlappen sich in der Regel Einträge. Sprich, zwei Einträge aus zwei unterschiedlichen Quellen meinen die selbe Sache. In dem nächsten Schritt geht es darum, herauszufinden, welche Einträge zusammen gehören. Dadurch, dass alle Datenquellen nach dem ersten Schritt in einer einheitlichen Struktur sind, können die einzelnen Felder ganz einfach verglichen werden. Oft gibt es leider keinen eindeutigen Schlüssel, der zugehörige Paare schnell aufdecken würde (z.B. die ISBN bei Daten zu Büchern). Deshalb müssen häufig die Felder der Einträge auf ihre Ähnlichkeit geprüft werden (z.B. Prozent der Abweichung bei Zahlen oder Levenshtein-Distanz). Diese Ähnlichkeiten können dann im einfachsten Fall gewichtet aufsummiert werden. Ab einer gewissen Grenze werden dann Einträge als zusammengehörig erkannt. Das Beispiel zeigt wie zwei Einträge über den identischen Wert im Feld >Name< zueinander zugeordnet werden können.
Das Ergebnis dieser Phase ist eine Liste von Paaren oder Gruppen von Einträgen, die die selbe Sache beschreiben. Die Auswahl der Methoden zur Bestimmung der Ähnlichkeit sowie deren Gewichtungen können auch maschinell gelernt werden. Hierzu muss zunächst eine ausreichend große Menge an Zuordnungen händisch getroffen werden. Danach kann die Maschine ein Modell lernen, mit dem es diese Zuordnung reproduzieren kann. Dieses Modell kann schließlich auf alle weiteren Einträge angewendet werden.
Wie führe ich die Einträge zusammen?
In der letzten Phase wurden zusammengehörige Einträge identifiziert. Diese Einträge sollen nun auch zusammengeführt werden. Hierzu werden die einzelnen Felder betrachtet. Bei jedem Feld wird sich dann entschieden, wie der fusionierte Wert bestimmt werden soll. Im Beispiel werden zwei Einträge zu einem zusammengeführt. Im einfachsten Fall sind die Werte identisch (z.B. bei >Anna<). Auch wenn nur einer der Einträge einen Wert zu einem bestimmten Feld hat, ist die Zusammenführung einfach. Es wird dann meistens der eine gegebene Wert genommen. Der dritte Fall tritt ein, wenn die Werte unterschiedlich sind (wie bei >Alter<). Üblicherweise definiert man für jedes Feld eine Vorgehensweise, falls Konflikte auftreten. Diese können sich auf die Ursprünge der Einträge (Welche Datenquelle ist aktueller? Welcher Datenquelle vertraue ich mehr?) oder die Werte der Einträge beziehen. Im Beispiel wird für das Feld >Alter< die größte Zahl ausgewählt.
Das Ergebnis der letzten Phase ist ein Datensatz mit integrierten Daten aus mehreren Quellen. Je nach Anwendungsfall werden auch Einträge mit einbezogen, die in der zweiten Phase keinen anderen Einträgen zugeordnet werden konnten. Es empfiehlt sich, dass Ergebnis am Ende noch einmal händisch stichprobenartig zu überprüfen, um die Qualität der Daten zu gewährleisten.
Referenzen und Links
- Prof. Dr. Christian Bizer, Anna Primpeli, Oliver Lehmberg: Web Data Integration. Vorlesungsunterlagen.
- Ulf Leser, Felix Naumann: Informationsintegration. dpunkt, 2007.
- AnHai Doan, Alon Halevy, Zachary Ives: Principles of Data Integration. Morgan Kaufmann, 2012.
- Luna Dong, Divesh Srivastava: Big Data Integration. Morgan & Claypool, 2015.
Kommentar schreiben
Tim P. (Samstag, 23 Dezember 2017 17:37)
Danke für den schnellen Überblick. :)