Workshop - Daten zwischen Projekten in OpenRefine abgleichen

Folie - Daten zwischen Projekten in OpenRefine abgleichen Folie - Daten zwischen Projekten in OpenRefine abgleichen

Daten können zwischen OpenRefine Projekten abgeglichen werden. In diesem Tutorial zeigen wir wie das funktioniert.

Einführung

cross() in der OpenRefine Dokumentation.
cross() im OpenRefine Wiki.

Wir verwenden in diesem Workshop OpenRefine in Version 3.5.2.

Im Artikel Gemeinsam an OpenRefine-Projekten arbeiten haben wir verschiedene Varianten, Daten zwischen OpenRefine Projekten abzugleichen, besprochen und verglichen. In diesem Tutorial fokussieren wir uns auf die Funktion cross() in OpenRefine, ohne über Alternativen und zukünftige Entwicklungen zu spekulieren.

Vorbereitung: Projekt erstellen

Die folgenden Dateien jeweils in ein OpenRefine-Projekt laden.

💾 Wir benötigen die folgenden Dateien (Rechtsklick und “Ziel speichern unter…”):
Staedte in BW
Staedte in BW - Geokoordinaten

In der Datei für das Projekt “Staedte in BW” sind Informationen aus Wikidata und der GND zu den 25 bevölkerungsreichsten Städten in Baden-Württemberg gesammelt.

In der Datei für das Projekte “Staedte in BW - Geokoordinaten” sind Geokoordinaten für Städte in Baden Württemberg gesammelt. Mit diesen beiden Projekten testen wir in den folgenden Aufgaben den Datenabgleich.

Das Projekt “Staedte in BW” verwenden wir in 13 Die Welt der Facets noch einmal.

Aufgabe 1: Daten via Name abgleichen

Im Projekt “Staedte in BW” wollen wir die passenden Geokoordinaten für die einzelnen Städte aus dem Projekt “Staedte in BW - Geokoordinaten” nachladen. Dafür gehen wir im Projekt “Staedte in BW” über “Stadt" "Edit column" "Add column based on this column…” und verwenden den folgenden GREL Ausdruck.

cell.cross(
    "Staedte in BW - Geokoordinaten",
    "Name")
  .cells["Geokoordinaten (WGS 84)"]
  .value[0]

Dabei benötigen wir den exakten Projektnamen des Projektes aus dem wir die Daten nachladen wollen (“Staedte in BW - Geokoordinaten”), die Spalte in dem anderen Projekt mit der unsere Spalte “Stadt” abgeglichen werden soll (“Name”) und den Namen der Spalte in dem anderen Projekt, die wir “nachladen” wollen (“Geokoordinaten (WGS 84)”). Der Dialog ist in Abbildung 1 gezeigt.

Bildschirmfoto des Dialogs zum Abgleich mit einem anderen Projekt über die Spalte Stadt.

Aufgabe: in der Vorschau in Abbildung 1 ist zu sehen, dass für “Freiburg im Breisgau” keine Daten nachgeladen werden konnten. Warum ist das so? Gibt es noch weitere “problematischen” Einträge? Was bedeutet das für einen Abgleich über “Namen”?

Lösung:

  • Im Projekt “Staedte in BW - Geokoordinaten” sind die Namen der Städte “Freiburg im Breisgau” und “Esslingen am Neckar” abgekürzt.
  • Ein Abgleich über Namen scheitert manchmal an unterschiedlichen Schreibweisen.
  • Wenn möglich also besser eindeutige IDs verwenden.
  • Siehe auch Gemeinsam an OpenRefine-Projekten arbeiten für weitere Details und mögliche Lösungsstrategien.

Aufgabe 2: Daten via ID abgleichen

Wir wiederholen die Aufgabe mit einem Abgleich über die Spalte “GND-ID”.

Aufgabe: Laden Sie im Projekt “Staedte in BW” die Spalte “Geokoordinaten (WGS 84)” aus dem Projekt “Staedte in BW - Geokoordinaten” über einen Abgleich mit der Spalte “GND-ID” nach.

Lösung:

Dafür gehen wir im Projekt “Staedte in BW” über “GND-ID” “Edit column” “Add column based on this column…” und verwenden den folgenden GREL Ausdruck.

cell.cross(
    "Staedte in BW - Geokoordinaten",
    "GND ID")
  .cells["Geokoordinaten (WGS 84)"]
  .value[0]
Bildschirmfoto des Dialogs zum Abgleich mit einem anderen Projekt über die Spalte GND-ID.

Fazit

Mit der Funktion cross() können ziemlich komfortabel Daten zwischen unterschiedlichen OpenRefine Projekten abgeglichen werden. Natürlich kann sie auch dazu verwendet werden Datenspalten innerhalb eines Projektes zu vergleichen. Die Funktion kann jedoch nur eindeutige Werte zusammenführen. Schon kleinste Abweichungen wie zusätzliche Leerzeichen oder Abkürzungen sorgen für einen fehlenden Abgleich der einzelnen Zeilen. Umso wichtiger ist ein sorgfältiges Arbeiten und die Verwendung von eindeutigen Identifikatoren.


Im nächsten Teil beschäftigen wir uns weiter mit Facets in OpenRefine.

Benjamin Rosemann
Benjamin Rosemann
Data Scientist

Ich evaluiere KI- und Software-Lösungen und integriere sie in den Archivalltag.

Ähnliches