# 2.3.5 Für jedes MARC-Feld eine Spalte

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.

Das Vorgehen ist insbesondere bei Schritt 3 nicht besonders intuitiv. Das liegt daran, dass OpenRefine das MARC21-Format nicht "versteht" und wir jeden einzelnen Transformationsschritt selbst vorgeben müssen. Gleichzeitig demonstriert es Ihnen einige Funktionen von OpenRefine und zeigt, wie vielfältig das Werkzeug einzusetzen ist.

## Vorgehen

Schritt 1: Vorerst nicht benötigte Spalten löschen

* 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

Schritt 2: MARC-Felder durchgängig belegen

* Spalte "record - datafield - tag" / Edit cells / Fill down

Schritt 3: PPN aus Spalte record-leader in Spalte mit MARC-Feldern verschieben (und dafür eine neue Zeile einfügen)

* 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 Spalte ("To Column") ```NEU``` 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

Schritt 4: MARC-Feld mit Feld MARC-Code zusammenfassen

* Spalte "record - datafield - tag" / Edit cells / Transform... den Wert ```value + " : " + cells["record - datafield - subfield - code"].value``` eingeben
* Spalte "record - datafield - subfield - code" / Edit column / Remove this column

Schritt 5: Sortieren und Aufräumen

* Spalte "PPN" / Edit cells / Fill down
* Spalte "PPN" / Sort... / OK
* Spalte "record - datafield - tag" / Sort... / OK
* Im neu verfügbaren Menü "Sort" den Menüpunkt "Reorder rows permanently" auswählen
* Spalte "PPN" / Edit column / Remove this column

Schritt 6: Felder mit Mehrfachbelegungen zusammenführen

* Spalte "record - datafield - tag" / Edit cells / Blank down
* Spalte "record - datafield - subfield" / Edit cells / 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).

Schritt 7: Transpose

* Spalte "record - datafield - tag" / Transpose / Columnize by key/value columns... / OK

## Literatur zu den genutzten Funktionen

* [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)
