In den ersten beiden Teilen der Blogreihe habe ich erklärt, wie Problemstellungen bei großen, „historisch gewachsenen“ Datenansammlungen sich grundsätzlich lösen lassen. Mithilfe des Programms OpenRefine optimiert man Datensätze in fünf Schritten:

  1. Quelldaten einlesen
  2. Daten analysieren
  3. Daten aufräumen und optimieren
  4. Daten anreichern
  5. Daten im Zielformat ausgeben

Natürlich benötigen individuelle Problemstellungen individuelle Lösungen. Zu bedenken ist auch: OpenRefine ist zwar sehr mächtig, praktisch in der Anwendung und in der Lage, die häufigsten Probleme zu lösen – aber bei Weitem nicht perfekt:

  • Eine große Anzahl von Einträgen in konfigurierten Facetten führt – abhängig vom verwendeten Browser – zu langen Antwortzeiten.
  • Layout-Informationen in Quellformaten überstehen den Import und Export nicht.
  • Der Export nach Excel 2010 und höher ist für große Datenmengen (ab 100.000 Datensätze) nicht möglich. Über den Umweg CSV kann man diese Einschränkung umgehen.

Im Folgenden stelle ich typische Problemstellungen vor und erkläre, wie diese mit OpenRefine individuell gelöst werden.

Stammdaten bereinigen

Sie müssen einen großen Bestand von Stammdaten vereinheitlichen? Über die Zeit haben sich verschiedene Benennungen für gleiche Dinge, verschiedene Schreibweisen in Benennungen, uneinheitliche Inhalte in Feldern etc. zu einem nur schwer beherrschbaren Verhau angesammelt?

  • Datenbestand über OpenRefine einlesen.
  • Daten analysieren, z. B. über Wort-Facetten und unter Verwendung der Cluster-Funktion.
  • Regeln für die Vereinheitlichung ableiten.
  • Regeln zur Vereinheitlichung formulieren und in OpenRefine anwenden (z. B. Leerzeichen optimieren, Cluster zusammenführen sowie Inhalts-Bestandteile suchen und ersetzen).
  • Daten zur Weiterverarbeitung exportieren.

Inhalte zerlegen

Sie müssen Inhalte aus einem Feld in ihre Bestandteile zerlegen? Der Artikelname enthält nicht nur die Bezeichnung, sondern z. B. auch Gewichtsangaben, die explizit benötigt werden?

  • Datenbestand über OpenRefine einlesen.
  • Neue Spalte anlegen, basierend auf einer Zerlegungsregel.
  • Abhängig von der Gleichartigkeit der Daten mehrere Optimierungen über Verfahren aus der ersten Fragestellung umsetzen.
  • Menge der noch nicht vollständig optimal zerlegten Daten über regelbasierte Facetten einschränken, sodass weitere Optimierungen nur auf die noch offene Teilmenge wirken.
  • Daten zur Weiterverarbeitung exportieren.

Aufbereitung von strukturierten Daten

Sie wollen hierarchische, strukturierte Daten in Tabellenform zur weiteren Analyse aufbereiten und umwandeln?

  • XML-Daten einlesen. Den XML-Knoten auswählen, der den Anker für die Aufteilung in Tabellen darstellen soll.
    Beispiel XML-Struktur:
    <all>
    <article>
    <no>1234</no>>
    <desc>Artikelbeschreibung</desc>
    </article>
    <article>
    <no>2345</no>>
    <desc>Artikelbeschreibung 2</desc>
    </article>
    </all>

Wenn Sie das Element „article“ auswählen, wird für jeden Artikel eine Zeile in der Tabelle erstellt und alle darunterliegenden Inhalte werden als Spalten abgelegt:

  • Falls notwendig: Werte an übergeordneten Knoten über die Funktion „Fill down…“ den jeweiligen Detaildatensätzen zugänglich machen.
  • Daten über OpenRefine analysieren und optimieren.
  • Daten als CSV zur Verwendung in Excel oder relationalen Datenbanken exportieren.

Zusammenführung von Datensätzen

Sie möchten Datensätze aus zwei Systemen zusammenführen, bei denen gleiche Einträge erkannt werden, aber kein eindeutiger Schlüssel vorliegt?

  • Datenbestand der ersten Quelle über OpenRefine einlesen.
  • Datenbestand der zweiten Quelle über OpenRefine einlesen.
  • „Manuell“ prüfen, welche Datenfelder gleiche Werte enthalten müssen, wenn zwei Datensätze zueinander passen sollen.
  • Neue Key-Spalte anlegen, basierend auf der „NGramFingerPrint“-Funktion und den Spalten, die die gleichen Werte enthalten.
  • Für die zweite Quelle analog verfahren.
  • Erste und zweite Quelle exportieren.
  • Anschließend die Daten mit Tools vergleichen wie z. B. „Beyond Compare“ und anhand der Key-Spalte ordnen, um manuelle Fehlzuordnungen zu vermeiden und neue Datensätze zu übernehmen.

Zusammenfassung

OpenRefine ist ein kleines, spezialisiertes Tool, das für die genannten Aufgabenstellungen überraschend einfache Lösungen bereithält. Eine kleine, aber feine Unterstützungsgemeinde stellt eine Vielzahl von Erweiterungen und How-tos bereit, die auf viele Fragen eine Antwort geben. Alternativen zu diesem Tool gibt es viele mit teilweise deutlich höherem Funktionsumfang in Teilaspekten – jedoch erfordern diese meist eine intensive Einarbeitung.