Datenabgleich mit OpenRefine

Oft möchte man zwei Tabellen miteinander verbinden, um die Daten aus der einen Tabelle in die andere zu übernehmen. Das ist in Excel mit einem SVerweis überhaupt kein Problem, solange es eine Spalte in beiden Tabellen gibt die exakt übereinstimmt (z.B. der amtliche Gemeindeschlüssel für Kommunen in Deutschland.

Schreibweisen von Namen, Berufsbezeichnungen, Adressen und anderen Bezeichnungen sind aber oft nicht identisch, sondern weichen in Kleinigkeiten voneinander ab. Da gibt es den Gerhard F. Müller und den Gerhard Friedrich Müller genauso wie Neustadt adW, an der Weinstrasse, a.d. Weinstraße usw.  Viele Möglichkeiten also, die dazu führen, dass der SVerweis ins Leere (#NV) führt.

Um diesem Problem zu entkommen benötigt man eine unscharfe Suche, die OpenRefine mit seinem Reconciling-Service (Abgleich-Algorithmus) anbietet. Grundsätzlich bietet dieser Service extrem viele (und komplexe) Möglichkeiten.

Für die eigenen Zwecke gibt es von der Open Knowledge Foundation ein Tool, mit dessen Hilfe man eine beliebige CSV-Datei als eigenen Reconciling-Service zur Verfügung stellen kann.

Dieser Service greift auf die zur Verfügung gestellte CSV-Datei zu und schlägt je nach eingestelltem Abgleich-Algorithmus Kandidaten für das Matching vor. Damit wird im Hintergrund eine eindeutige ID für das Matching vergeben, so dass man anschließend auf die weiteren Daten (Spalten) in der CSV-Datei zugreifen kann.

Schritt für Schritt Anleitung (Windows)

  1. Die CSV-Datei für den Abgleich vorbereiten.
    1. Sie muss für den Abgleich Komma-separiert sein (Semikolon führt zu Fehlern!). Gegebenenfalls in Notepad+ oder einem anderen Texteditor mit Suchen&Ersetzen alle Semikola durch Kommata ersetzen.
    2. Die Datei muss außerdem eine Spalte mit einem eindeutigen Schlüssel/ID enthalten, ob fortlaufende Nummer oder ein anderer Code ist egal, nur muss jede Zeile eine eindeutigen Schlüssel besitzen.
    3. Diese CSV-Datei muss im selben Verzeichnis wie die Batch- bzw. Java-Tool liegen (Schritt2&3).
  2. Das Java-Tool bei der OKFN herunterladen
  3. Da das Starten des Tools unter Windows etwas hakelig sein kann startet man am Besten mit Hilfe einer Batchdatei. Dazu eine leere Textdatei erstellen und folgenden Code einkopieren und an die eigenen CSV-Datei anpassen (Name der Spalte für die Suche und Name der Spalte mit eindeutigen Schlüssel. Anschließend unter dem Namen „Start_Reconcile.bat“ im selben Verzeichnis wie das Jar-File und die für den benutzte CSV-Datei abspeichern.
  4. OpenRefine wie üblich starten und ein eigenes Projekt öffnen. In der Spalte mit den Daten für den Abgleich im Spaltenmenu „Reconcile“  -> „Start reconciling“ wählen und im folgenden Menu den Eintrag „CSV Reconciliatione Service“ wählen. Die weiteren Einstellungen sind hier zunächst nicht von Belang.
  5. Je nach Größe der zur Verfügung gestellten CSV-Datei kann der Abgleich einige Minuten benötigen.
  6. Reconcile-FunktionenDanach stehen in verlinkte Matching-Vorschlägen zur Verfügung.
    Mit einem Klick auf das Häkchen (1) übernimmt man den Vorschlag. Mit einem Klick auf (2) übernimmt diesen Vorschlag für alle gleichgeschriebenen Einträge. Unter (3) kann man in der CSV-Datei nach weiteren Vorschlägen suchen lassen. Ein Klick auf den Matchingvorschlag öffnet in einem neuen Fenster ein Blick auf den Datensatz. Das kann gegebenenfalls hilfreich sein, um nicht eindeutige Vorschläge durch weitere Informationen aus der CSV-Datei zu plausibilisieren.
  7. In der linken Navigation von OpenRefine gibt es die Möglichkeit die besten Kandidaten über das Scoring als Facette einzugrenzen (siehe Bild). So kann man bspw. allen Einträgen, die ein Scoring von höher als 0.8 haben den jeweils besten Kandidaten automatisch zuweisen. Diese und weitere Funktionen um die Abgleichergebnissen weiter zu verarbeiten finden sich im Reconciling-Menu der Tabellenspalte.Scoring der Matching-Vorschläge
  8. Ist der Abgleich fertig gestellt wird eine neue Spalte mit der eindeutigen ID aus der CSV-Datei angelegt. Dazu mit „Edit Column -> add column based on this column” und dem GREL-Befehl „cell.recon.match.id“ in der Spalte mit dem Matching eine neue Spalte anlegen.
  9. Um nun Daten aus der CSV-Datei in das eigene Projekt zu holen muss auch die CSV-Datei als Projekt mit OpenRefine angelegt werden. Dazu die Datei als Refine-Projekt hochladen. In der Spalte mit der eindeutigen ID erzeugt man nun erneut eine neue Spalte mit dem GREL-Befehl:cell.cross(„Name desRefine Projekts der CSV-Datei“, „Spaltentitel der gemeinsamen Spalte“).cells[„Spaltentitel des gesuchten Werts“].value[0]
Dieser Eintrag wurde veröffentlicht in Datenjournalismus und getaggt als , , , . Fügen Sie den permalink zu Ihren Favoriten hinzu.

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *