Grosse CSV Tabellen strukturiert indexieren, sichten, durchsuchen und filtern

Strukturierte Daten im CSV-Format

Strukturierte Daten werden oft in Tabellenform im CSV-Format gespeichert oder können in diesem Format exportiert werden.

Meist lassen sich solche Dateien problemlos mit Tabellenkalkulationen wie Excel oder OpenOffice Calc öffnen, anschauen und nach Stichworten durchsuchen.

Zu gross für Excel oder Open Office Calc

Doch mittlerweile gibt es vermehrt Daten im CSV-Format, deren Datenmenge zu gross ist, um diese mit Tabellenkalkulationen wie Excel oder Open Office Calc öffnen und / oder komfortabel durchsuchen zu können.

Sind CSV-Dateien "nur" mehrere duzend Megabyte gross, scheitert ein Öffnen mit einem Tabellenkalkulationsprogramm meist nur an der (Vor)Einstellung des falschen Delimiters (Trenner) beim Öffnen, was der Software wegen der sich daraus völlig falsch ergebenden und manchmal gar nicht mehr handlebaren Tabellenstrukturen Probleme bereiten kann, was sich durch entsprechende Umstellung des Trenners bzw. Delimiters auf Komma, Semikolon oder Tab meist erledigt hat.

Sind diese wegen grösserer Datenmengen trotzdem für Excel oder OpenOffice Calc zu gross, lassen sie sich bis zu einer gewissen Datengröße noch mit Tools wie OpenRefine, Panda Project oder PHPMyAdmin einlesen und durchschauen, die jedoch teilweise nicht unbedingt zum Recherchieren durch IT-Laien geeignet sind, teilweise tieferes technisches Verständnis bzgl. Datentypen benötigen oder bei herkömmlichen Datenbanklösungen bzw. PHPMyAdmin als Userinterface für MySQL-Datenbanken grössere Ansprüche an die Qualität des Datenformates stellen, weil deren Importfunktionen nicht für menschlich generierte und daher oft fehlerhafte Eingaben entwickelt wurden.

ProgrammiererInnen, die sich ein wenig mit CSV-Dialekten (siehe Python Dokumentation oder deutschsprachiges Python Buch) und unterschiedlicher Zeichencodierung (encoding) auskennen, können mit wenigen Zeilen Python Code auch größere Datenmengen verarbeiten, da nicht die gesamte Tabelle in den dazu oft zu kleinen Hauptspeicher (RAM) geladen sondern Zeile für Zeile nacheinander (sequentiell) eingelesen und verarbeitet wird.

Schneller dank Index: CSV Daten indexieren

Da letzteres bei jeder neuen Suche (beim ersten Einlesen bzw. Durchgehen oft noch unbekannt) wiederholt bzw. die gesamte Datenmenge von vorne bis hinten durchgelesen werden muss, lohnt sich oft eine Indexierung der Inhalte. Dazu können die Daten z.B. in einen Elastic Search oder Solr Suchserver bzw. unter der Haube einen Apache Lucene-Index importiert werden.

Bei gewöhnlichen Tabellen mit wenigen Kilobyte oder Megabyte Daten ist der Import der CSV-Datei bzw. die Indexierung der Daten innerhalb weniger Sekunden erledigt.

Ansonsten dauert die Indexierung zwar beispielsweise auf einem durchschnittlichen Laptop etwa eine Stunde pro Gigabyte, aber ein (je nach Datenmenge oft nicht erfolgreiches) Öffnen mit einer Tabellenkalkulation braucht auch viel Zeit.

Dafür ist jede nachfolgende Suche darin in Sekundenbruchteilen möglich. Selbst ein Abgleich hunderter oder tausender Einträge z.B. mitteils einer Liste mit lokalen oder branchenspezifischen Unternehmen ist dann innerhalb von Sekunden möglich.

Dazu kann eine solche CSV Datei einfach mit einer Suchmaschine indexiert werden. Dazu z.B. bei konfiguriertem Filesystem-Monitoring einfach in ein damit überwachtes Verzeichnis kopieren oder per Admin Interface oder per Kontextmenü des Dateimanagers einen Crawl bzw. eine Indexierung der CSV-Datei starten.

Schnelle Volltextsuche

Unabhängig vom CSV-Format lassen sich die Inhalte der CSV-Tabelle danach mit per Volltextsuche durchsuchen und das auch bei vielen GB Daten innerhalb von Sekundenbruchteilen.

Komfortable Tabellensuche

Ist die Anreicherung mit dem Modul Enhancer-CSV eingeschaltet und liegt die CSV-Datei in einem Standard-Format vor, lässt sich nicht nur in den Inhalten der CSV-Tabellen suchen, sondern solche mittels Tabellenansicht auch strukturierter sichten, analysieren und filtern. Z.B. ist zeilenweise Suche möglich, bei der alle Suchworte und Filterkriterien jeweils pro Tabellenzeile bzw. pro einzelnen Datensatz vorliegen müssen, nicht nur in der gesamten CSV-Tabelle.

Auf Grund wachsender Datenmengen ist solche Funktionalität auch für CSV-Tabellen, die nicht in Standard-Formaten vorliegen nötig und nicht immer ein IT-Spezialist für einen individuell eingestellten Import zur Hand.

Laiengerechtes User Interface zum Konfigurieren und Indexieren von CSV-Formaten

So entstand ein nutzerInnenfreundliches User Interface bzw. die Django basierte Webapp CSV-Manager, die auch von JournalistInnen ohne tiefere CSV- und Programmierkenntnisse und ohne die Hilfe von IT-SpezialistInnen bedient werden kann und in den allermeisten Fällen zum erfolgreichen laiengerechten Importieren grosser und auch speziell formatierter CSV-Tabellen mit wenigen Schritten ausreicht:

Falls nicht bereits von der Suchmaschine durch entsprechende Konfiguration wie Filesystemmonitoring oder konfigurierte Crawler oder andere Indexierungstools indexiert muss in den meisten Fällen nur der Filename referenziert oder die Datei hochgeladen werden, um die enthaltenen Daten mit dem Button "Import" in einen Solr Index zu importieren:

Die von dieser Anwendung importierten Datensätze lassen sich z.B. mit der Tabellensuche der Suchmaschine Open Semantic Search oder mit allen anderen Solr basierten Suchlösungen durchschauen, filtern oder durchsuchen.

Automatische Erkennung unterschiedlicher Formate und Zeichensätze

Die voreingestellte automatische Zeichensatz- und CSV-Format Erkennung funktioniert in den meisten Fällen ohne weitere Einstellungen.

Menschliche Intelligenz als letzte Entscheidungsinstanz

Da auf Grund des nicht eindeutig definierten Formats Ergebnisse solcher Formatanalysen jedoch nicht immer richtig sind, sondern mittels Heuristiken und Wahrscheinlichkeiten geschätzt werden, können AnwenderInnen sie manuell einstellen und manchmal unzutreffende Analyseergebnisse oder Standardeinstellungen überschreiben:

Ist das Ergebnis des Imports also nicht richtig strukturiert bzw. die Daten nicht in die richtigen Spalten aufgeteilt weil nicht das Komma als Trenner zwischen Spalten ("Delimiter") genutzt wurde oder wurden Sonderzeichen nicht richtig erkannt, lassen sich entsprechende Formateinstellungen mittels nutzerfreundlichem User Interface bzw. Nutzerschnitstelle manuell vornehmen.

So z.B. das Einstellen von in seltenen Fällen nicht oder falsch erkannten und in Deutschland noch öfter verwendete Zeichensätzen wie ISO8859-1 oder ISO8859-15) oder die manuelle Einstellung von manchmal nicht automatisch erkannten selteneren Trennern wie z.B. das Semikolon oder Tabulator.