
HistHub befasst sich in einer Blogserie mit der Aufbereitung und Anreicherung von Daten in OpenRefine. Dieser Beitrag zeigt häufig angewandte Transformationen.
Als Grundlage dienen weiterhin die Metadaten zu den Fotografien von Annemarie Schwarzenbach, die im Beitrag über das Erstellen eines OpenRefine-Projekts vorgestellt wurden.
Häufige Transformationen
Die Spalte «Titel_Name» enthält Informationen über die Fotografie, die meist aus einem Land, einem Ortsnamen und einer genaueren Bezeichnung bestehen. Diese wollen wir extrahieren. Es gibt in der Tabelle zwar eine Spalte «Ort», mit einer Facette lässt sich aber schnell herausfinden, dass diese nur Orte in der Schweiz enthält. Um eine Spalte mit Ortsangaben weltweit zu erstellen, wollen wir aus der Spalte «Titel_Name» Ortsangaben extrahieren. Davor putzen wir die Einträge.
Whitespace entfernen
Ein häufiges Phänomen sind überzählige Leerzeichen am Anfang oder Ende einer Zelle. OpenRefine stellt eine Funktion zur Verfügung, die mit einem Klick solche Zeichen entfernt. Über das Spaltenmenü -> «Edit cells» -> «Common transforms» -> «Trim leading and trailing whitespace» wird diese aufgerufen. In diesem Beispiel gibt es keine Leerzeichen am Anfang oder Ende eines Eintrags, OpenRefine bearbeitet also 0 Zeilen.

Auch die Funktion «Collapse consecutive whitespace» sollte vor weiteren Transformationen ausgeführt werden. Mit dieser Funktion werden 10 Zeilen bearbeitet, in denen es offenbar aufeinander folgende Leerzeichen gab.
Spalten trennen
Die meisten Einträge in der Spalte «Titel_Name» sind so aufgebaut, dass zuerst das Land, nach einem Komma die Ortschaft und danach eine genauere Bezeichnung für das Bild angegeben ist.

Dies machen wir uns zunutze.
Über das Menü der Spalte «Titel_Name» wird «Edit column» -> «Split into several columns…» aufgerufen.

Darauf können die Parameter der Trennung der Spalte eingestellt werden. Zuerst trennen wir die genauere Bezeichnung hinter der Ortsbezeichnung ab.
OpenRefine bietet zwei Möglichkeit zur Trennung von Spalten an:
- Bei einem bestimmten Trennzeichen, oder
- bei einer bestimmten Anzahl von Zeichen.
Für unser Problem bietet sich eine Trennung nach dem «: » an. Der Leerschlag ist notwendig, sonst beginnt die zweite Spalte mit einem solchen. Reguläre Ausdrücke sind möglich. Eine Einführung inklusive Übungen zu Regulären Ausdrücken bietet der Regexr. In OpenRefine kann bei der Trennung von Spalten eine maximale Anzahl neu zu bildender Spalten angegeben werden.
Rechts im Bearbeitungsfenster können weitere Optionen angewählt werden, die OpenRefine nach der Trennung der Spalten ausführt. «Guess cell type» bestimmt automatisch den Inhaltstyp der Zelle, also ob es sich um einen String (Text), eine Zahl oder ein Datum handelt. «Remove this column» entfernt die ursprüngliche Spalte. Diese Option soll jetzt nicht gewählt werden, wir wollen die ursprüngliche «Titel_Name»-Spalte beibehalten.
Ein Klick auf «OK» trennt die Spalten. Neben der Spalte «Titel_Name» befinden sich jetzt die Spalte «Titel_Name 1» und die Spalte «Titel_Name 2» mit der genaueren Bezeichnung des Inhalts der Fotografie, und «Titel_Name 3».
Diese letzte Spalte wurde so nicht erwartet. Eine Facette zeigt, dass lediglich zwei Zeilen in dieser Spalte einen Inhalt haben.

Offensichtlich befand sich in diesen Zellen mehr als ein «: », sodass sie mehr als einmal geteilt wurden. Dies hätte sich mit einer «2» bei «Split into _ columns at most (leave blank for no limit)» verhindern lassen. Beheben lässt sich der Fehler, indem der letzte Schritt rückgängig gemacht (siehe unten) und mit dieser Einstellung nochmal wiederholt wird.
Die Spalte «Titel_Name 1» wird nun erneut aufgeteilt, diesmal beim «, ». Der Prozess ist derselbe wie vorhin. Diesmal setzen wir aber ein Häkchen bei «Remove this column», und legen die maximale Anzahl der Spalten auf 2 fest. Daraus entstehen die Spalten «Titel_Name 1 1» und «Titel_Name 1 2».
Umbenennen von Spalten
Diese Namen sind etwas unhandlich, wir werden deshalb sinnvollere Spaltenüberschriften vergeben.

Dies wird im Spaltenmenü unter «Edit column» -> «Rename this column» gemacht. Aussagekräftigere Titel sind z.B. «Land» für «Titel_Name 1 1», «Ort_weltweit» für «Titel_Name 1 2» und «Kurztitel» für «Titel_Name 2». Aus einer Spalte, die Ortsnamen und andere Inhalte enthielt, haben wir jetzt übersichtliche Informationen extrahiert.
OpenRefine lässt Leerzeichen in Spaltenüberschriften zu. Da andere Anwendungen damit Probleme haben, ist es dennoch sinnvoll, von Anfang an auf Leerzeichen oder Sonderzeichen wie Umlaute zu verzichten.
Undo/Redo
Verschiedentlich wurde schon auf die Möglichkeit verwiesen, Arbeitsschritte rückgängig zu machen.
Schnell und einfach geht das mit der Tastenkombination Ctrl + Z. OpenRefine bietet aber mehr.
Im Tab «Undo/Redo» in der linken Seitenspalte können einzelne oder mehrere Schritte rückgängig gemacht oder wiederholt werden. Der aktuelle Stand des Schwarzenbach-Metadaten-Projekts sieht so aus:

Alle Arbeitsschritte sind aufgelistet, jeweils mit den umgesetzten Befehlen. Auch über das Menü ausgeführte Befehle sind hier als Text dargestellt.
Ein Klick auf einen Arbeitsschritt setzt das ganze Projekt wieder auf diesen Stand zurück.
Ausserdem kann der Code aller oder einiger der bisherigen Arbeitsschritte kopiert werden. Danach können sie in einem anderen oder auch im selben Projekt angewendet werden. Dazu auf «Extract» klicken. Hier können die gewünschten Arbeitsschritte ausgewählt werden.
Auf der rechten Seite wird das JSON angezeigt. Sind die gewünschten Arbeitsschritte ausgewählt, kann der Code mit Ctrl + A markiert und mit Ctrl + C kopiert werden.
Zur Übung kopieren wir den Code aller Arbeitsschritte. Dann setzen wir das Projekt im Tab Undo/Redo auf den Schritt 0 zurück, indem wir auf «0. Create Project» klicken. Danach «Apply» wählen, den zuvor kopierten Code mit Ctrl + V in das Textfeld einfügen, und mit «Perform Operations» anwenden. Das Projekt ist jetzt wieder auf dem gleichen Stand wie zuvor.
Auf diese Weise Arbeitsschritte zu kopieren funktioniert auch über Projekte hinweg, wenn die Spaltenüberschriften dieselben sind.
Fragen, Anregungen oder Wünsche nehmen wir gerne per Mail entgegen.