Fill down und Blank down

histHub befasst sich in einer Blogserie mit der Aufbereitung und Anreicherung von Daten in OpenRefine. Alle Beiträge der Serie werden in einer Übersicht gesammelt. Im letzten Beitrag haben wir uns mit dem Unterschied zwischen Rows und Records befasst. Ein Vorteil des Record-Mode ist die Möglichkeit, «Fill Down» und «Blank down» zu kontrollieren.

«Fill down» und «Blank down» werden in OpenRefine recht häufig verwendet, beispielsweise beim Deduplizieren. Beide Funktionen sind «gierig». Das heisst, sie füllen alle leeren Zellen bis zum nächsten Inhalt. Dies sowohl im Row- als auch im Record-Mode.

Zur Veranschaulichung hier kein kleines Beispiel, wieder mit den Metadaten zu den Fotografien von Annemarie Schwarzenbach:

Dazu verschieben wir zuerst die Spalte mit den Ortsangaben an den Anfang, damit wir anhand dieser Spalte records erstellen können (Spaltenmenü – Edit column – Move column to beginning).

openrefine blank down

Als nächstes wenden wir Blank down auf die erste Spalte an. Einmal im row-mode, dann machen wir den Schritt rückgängig und führen denselben Befehl im record-mode aus.

openrefine blank down row mode
Rows

openrefine blank down record mode
Records

Beide Male werden dieselben Zellen entfernt. Der Record-Mode schützt also nicht vor den manchmal zu gierigen Blank- oder Fill Down Funktionen.

Sicheres Blank Down und Fill Down

Angenommen wir wollen alle Zellen füllen, die zu einem Record gehören. Dazu wenden wir folgenden Trick an. Voraussetzung ist, dass das Projekt im Record-Mode geöffnet ist. Auf die gewünschte Spalte wenden wir eine Transformation an (Edit cells – Transform):

row.record.cells["Spalte"].value[0]

Zwischen [“”] wird der Name der entsprechenden Spalte eingefügt. Hier darf es keine Tippfehler geben, ansonsten meldet Openrefine «Error: cannot retrieve field from null». Dieser Befehl bringt OpenRefine dazu, nur innerhalb des Records aufzufüllen. Dies verhindert, dass falsch aufgefüllt wird und Informationen in Zeilen landen, die dort nicht hin gehören.

Zu beachten ist dabei immer, dass dies nur im Record-Mode funktioniert. Das heisst, Reocrds müssen erstellt und soweit bereinigt sein, dass die entsprechende Spalte aufgefüllt werden kann, ohne falsche Daten zu produzieren. Die zweite Einschränkung ist, dass OpenRefine den Record-Mode anhand der ersten Spalte erstellt. Diese erste Spalte darf deshalb erst dann aufgefüllt werden, wenn es den Record-Mode danach nicht mehr braucht. Ansonsten müsste entweder über den Undo/Redo Tab rückgängig gemacht werden, oder die im letzten Beitrag beschriebenen Arbeitsschritte müssten wiederholt werden, um die Records wiederherzustellen. Oder es werden nach neuen Kriterien neue Records geschaffen.

Fragen, Anregungen oder Wünsche zu histHub oder zur Blogserie zu OpenRefine nehmen wir gerne per Mail entgegen.