Pivottabellen aus CSV-Daten ganz ohne Excel
Querverweise
Schnell ohne jedwede Programmierkenntnisse zusammengeklickt, dürfte die bezeichnenderweise meist mit Excel gleichgesetzte Pivottabelle wohl nur wenigen Firmen verzichtbar sein, bietet sie doch
Möglichkeit, Daten aus allen möglichen Blickwinkeln per Mausklick zusammenzufassen und flexibel zu strukturieren. Obwohl Microsoft den allgemeinen Begriff laut Wikipedia für einige Jahre mit einem
Markenrecht belegte, stellt das (Tabellen-)Pivot zwar einen kommerzieller Erfolg, nicht jedoch die Erfindung dieser Firma dar.
Darüberhinaus bietet Excel (als Default) ein auf Windows beschränktes, im Gegensatz zu OpenDocument proprietäres Format mit schwergewichtigem GUI-Prozess. Allein der Start der Laufzeitumgebung
dauert viele (in ständiger Wiederholung "qualvolle") Sekunden; eine Automatisierung wird neben Makros nur über VBA/Win32OLE möglich und bleibt auch dann ohne
manuelle Klimmzüge des Text-Im-/Exports auf die aktuelle Datei beschränkt. Verknüpfung mit mehreren Datenquellen ist in jedem Fall aufwändig, mindestens weder wiederverwendbar noch
systembruchfrei und eine Anbindung an die Online-Welt, beispielsweise als Backend eines Webservers kaum (GUI) bis unmöglich (Windows); selbst die just erstellte Pivot-Funktion
kann nicht aus einer Excel-Datei exportiert oder für weitere Tabellen verallgemeinert werden, sondern möchte für alle Tabellenarten neu zusammengebaut werden.
Möchte man hingegegen große Datenmengen aus einer Vielzahl von Quellen unterschiedlicher Tabellenstruktur vorfiltern, verknüpfen, anreichern, nachverarbeiten, im-/exportieren oder auch nur gemeinsam
auf einer Website online darstellen, ggf. via ssh-Befehl im Terminal oder simplem cron-job aktualisieren, bietet sich an, eine weitgehend allgemeingültige konfigurierbare Pivotierung für CSV-Dateien
zu implementieren, deren Algorithmus aus einem einzigen beliebig eigenen Bedürfnisse anpassbaren "freien" bash-Script mypivot (cf. Downloadbereich) ohne kommerzielle Lizenz besteht.
Dieses generiert ein über Kommandozeilenparameter konfigurierbares awk-Script pivot.awk, welches wiederum das Pivot erstellt.
Hierfür machen wir uns folgende Eigenschaften von Tabellen und derer Pivotdarstellung zunutze (Eingabespalten bezeichnen Spalten der Ursprungs-, Ausgabespalten solche der Pivottabelle):
- Ausgabevariante 1:
- Eingabespalten 1 bis n-2 beinhalten Text-Kategorien und ergeben zusammen (die je Kategorie eingerückte) Ausgabespalte 1
- Beispiel: Teams und deren Mitarbeiter
- Die m-2 (Text-)Ausprägungen von Eingabespalte n-1 ergeben die (Kopfzeilen der) Ausgabespalten 2 bis m-1
- Die Werte aus Eingaspalte n werden summiert ausgegeben als Ausgabespalten 2 bis m-1 und Gesamtsummenspalte m
- Ausgabevariante 2:
- Dies ist die "Kurzform" von Ausgabevariante 1
- Im Unterschied zur vorigen wird Eingabespalte n-1 behandelt wie jede andere Kategorienspalte 1 bis n-2
Beispielaufruf: mypivot -c "2 6:7 9 11" -p 12 -i Bericht.csv -t "Scope/Team:Eur:PT" -o Pivot_Projekt_Team_Monate_Eur_PT.txt -m '^Team' (Syntax cf. unten)
- Kategorienspalten: 2,6 und 9
- Spalte 9 ist vorletzte Spalte => deren Ausprägungen ergeben in der Langdarstellung die Ausgabespalten 2 bis m-1
- Kategorienspalte 6 wird mit Text aus Spalte 7 verknüft (z.B. Seriennummer und Klarname)
- Default-Summation über Spalte 11
- Zusätzliche Summation über Spalte 12
- Filterung auf alle Datensätze mit Muster "Team" am Zeilenanfang
- Spaltenüberschriften "Scope/Team", "Eur" und "PT"
- Ausgabename "Pivot_Projekt..."
Beispiele
Beispieltabelle in Excel und als CSV-Datensatz ...
Mit den CSV-Rohdaten des obigen Beispieles ergeben sich folgende Entsprechungen (als Excel-Pivot lediglich Summation über Eur-Beträge, als Text-Pivot Summation sowohl
über Eur-Beträge als auch gebuchte Tage)
Aufruf für Teams => Mitarbeiter => Monate => Buchungen [Eur][PT]
Aufruf für Mitarbeiter => Teams => Monate => Buchungen [Eur][PT]
Aufruf für Monate => Teams => Mitarbeiter => Buchungen [Eur][PT]
Syntax/Verwendung
Impressum und Datenschutzerklärung