seminar-wir-bauen-uns-einen.../07_3_fuer_jedes_marc-feld_e...

74 lines
4.6 KiB
Markdown
Raw Normal View History

# 7.3 Für jedes MARC-Feld eine Spalte
2016-11-14 21:41:34 +01:00
Aktuell sind die Inhalte eines Datensatzes über viele Zeilen verteilt. Die MARC-Felder stehen untereinander in Zeilen. Wir transformieren die Daten nun so, dass die Daten wie in einer üblichen Tabelle strukturiert sind, d.h.:
* Die MARC-Felder in den Spaltenüberschriften.
* Jeder Datensatz nur über eine Zeile.
Hinweise:
2016-11-14 22:15:36 +01:00
* Wir nutzen dazu die Funktion "Transpose / Columnize by key/value columns". Vor dem Transpose müssen die Daten in zwei Spalten zusammengeführt werden.
* Für manche zeilenbasierte Operationen müssen Sie wieder auf den Modus "Rows" (statt "Records") wechseln.
2016-11-18 22:40:02 +01:00
* In der Version 2.6rc2 von OpenRefine ist ein [Bug in der Funktion Columnize by key/value columns](https://github.com/OpenRefine/OpenRefine/issues/1093), daher müssen wir für diese Aufgabe die Version 2.6rc1 oder die aktuelle Entwicklungsversion nutzen.
2016-11-14 22:15:36 +01:00
```
sudo docker run --rm -p 8888:3333 -v /home/stud/refine:/data felixlohmeier/openrefine:2.6rc1 -i 0.0.0.0 -m 3G -d /data
```
2016-11-14 21:41:34 +01:00
## Vorgehen
2017-01-03 20:08:25 +01:00
Beenden Sie zunächst OpenRefine auf der Kommandozeile (mit ```STRG+C```) und starten Sie die Version ```2.6rc1``` von OpenRefine mit dem obigen Befehl. Da der Container mit der anderen Version von OpenRefine erst heruntergeladen werden muss, dauert das einen Moment länger. Anschließend können Sie OpenRefine wie gewohnt im Browser öffnen.
Schritt 1: Öffnen Sie das in Kapitel 7.2 erstellte Projekt. Wechseln Sie dazu auf die Startseite von OpenRefine und klicken Sie im Menü "Open Project" das Projekt an.
2016-11-14 21:41:34 +01:00
2016-11-14 21:50:47 +01:00
Schritt 2: Vorerst nicht benötigte Spalten löschen
2016-11-14 21:41:34 +01:00
* All / Edit columns / Re-order / remove columns...
* Spalten "record", "record - datafield", "record - datafield - ind1", "record - datafield - ind2" "record-controlfield" und "record-controlfield-tag" nach rechts schieben
2016-11-14 21:50:47 +01:00
Schritt 3: MARC-Felder durchgängig belegen
2016-11-14 21:41:34 +01:00
* Spalte "record - datafield - tag" / Edit cells / Fill down
2016-11-14 21:50:47 +01:00
Schritt 4: PPN aus Spalte record-leader in Spalte mit MARC-Feldern verschieben (und dafür eine neue Zeile einfügen)
2017-01-03 20:08:25 +01:00
* Spalte "record - leader" / Add Column based on this column...; Name für neue Spalte: ```NEU```
* Spalte "record - leader" / Transpose / Transpose cells across columns into Rows; In der zweiten Feldliste Spalte ```NEU``` ganz oben auswählen, rechts die Option "One column" auswählen und Name ```PPN``` eingeben
* Spalte "record - datafield - tag" / Facet / Customized facets / Facet by blank / Wert ```true``` auswählen und in Modus "rows" wechseln
* Spalte "record - datafield - tag" / Edit cells / Transform... / Wert ```"001"``` (also mit Anführungszeichen) eingeben und Facette schließen
* Spalte "record - datafield - tag" / Facet / Text facet / Wert ```001``` auswählen
* Spalte "record - datafield - subfield" / Edit cells / Transform... / Wert ```cells["PPN"].value``` eingeben und Facette schließen
2016-11-14 21:50:47 +01:00
Schritt 5: MARC-Feld mit Feld MARC-Code zusammenfassen
2017-01-03 20:08:25 +01:00
* Spalte "record - datafield - tag" / Edit cells / Transform... den Wert ```value + " : " + cells["record - datafield - subfield - code"].value``` eingeben
2016-11-14 21:41:34 +01:00
* Spalte "record - datafield - subfield - code" / Edit column / Remove this column
2016-11-14 21:50:47 +01:00
Schritt 6: Sortieren und Aufräumen
2016-11-14 21:41:34 +01:00
* Spalte "PPN" / Edit cells / Fill down
* Spalte "PPN" / Sort...
* Spalte "record - datafield - tag" / Sort...
* Im neu verfügbaren Menü "Sort" den Menüpunkt "Reorder rows permanently" auswählen
* Spalte "PPN" / Edit column / Remove this column
2016-11-14 21:50:47 +01:00
Schritt 7: Felder mit Mehrfachbelegungen zusammenführen
2016-11-14 21:41:34 +01:00
* Spalte "record - datafield - tag" / Edit cells / Blank down
2017-01-03 20:08:25 +01:00
* Spalte "record - datafield - subfield" / Join multi-valued cells und als Trennzeichen ```␟``` angeben (das Trennzeichen [Unit Separator ␟](http://unicode-table.com/en/241F/) aus dem Unicode-Zeichensatz kommt mit Sicherheit nicht in den Daten vor, daher ist dieses gut geeignet. Das Zeichen ist am einfachsten per copy & paste einzufügen).
2016-11-14 21:50:47 +01:00
Schritt 8: Transpose
2016-11-14 21:41:34 +01:00
* Spalte "record - datafield - tag" / Transpose / Columnize by key/value columns...
2017-01-03 20:08:25 +01:00
Schritt 9: Leere Zeile löschen
* Spalte "001" / Facet / Customized facets / Facet by blank / Wert ```true``` auswählen
* All / Edit rows / Remove all matching rows und Facette schließen
2016-11-14 21:41:34 +01:00
## Literatur
* [How can I join two datasets using a key in OpenRefine, with the secondary table having more than one value?](http://www.devsplanet.com/question/35776263) und [Cells to columns in OpenRefine](http://stackoverflow.com/questions/15187543/cells-to-columns-in-openrefine)
* [Zellen zusammenführen](http://kb.refinepro.com/2011/07/merge-2-columns-that-have-both-blank.html)
* [Trick, um neue Zeilen einzufügen](http://kb.refinepro.com/2011/12/add-extra-rows-records-in-google-refine.html)