Datenquellen soll man nutzen können

Eine riesige Menge an Daten stehen uns heute zur Verfügung. Möchte man aber diese nutzen um neue Erkenntnisse zu gewinnen, so zeigt die Praxis dass es selten gleich losgehen kann. Oftmals liegen die Daten in unterschiedlichen Formaten ab. Teilweise sogar in einem Format, dass nur noch eine manuelle Bearbeitung möglich ist. Möchte man aber effizient die Daten nutzen, so ist eine automatische Verarbeitung immer anzustreben. Im folgenden möchte ich auf Punkte eingehen, welche ich aus der Praxis erlebt habe wenn es darum geht, Geschäftsprozesse durch Automatisierungen zu unterstützen.

Geschätzt Lesezeit 10 Minuten.

Eine grosse Herausforderung bei der automatischen Verarbeitung von Daten sind deren Quellen und wie die Daten zur Verfügung gestellt werden. Jede automatische Verarbeitung bedarf einer stabilen Datenquelle, welche klar strukturiert ist. Dies bedeutet, dass zu jedem Zeitpunkt die gelesenen Daten ohne menschlichen Eingriff verarbeitet werden können.

Im folgendem möchte ich auf diverse Punkte eingehen, die eine maschinelle Verarbeitung erschweren oder sogar verunmöglichen und wie man damit umgehen sollte.

 

Was der Computer zum Menschen unterscheidet

Im Unterschied zu uns Menschen ist es für einen Computer am besten, wenn Daten in strukturierter Form wie einer Tabelle vorliegen und keine Formatierung, keine Grafiken usw aufweisen. Für uns Menschen ist es ideal wenn z.B. eine Excel-Datei mit Titel, Rändern, Legenden usw.. beschrieben wird und wir so visuell einfacher zu Erkenntnissen kommen als wenn uns nur eine Tabelle vorliegen würde. Doch genau dies ist für die maschinelle Verarbeitung ein grosses Problem.

 

Herausforderung beim Daten organisieren

Bevor wir uns mit den Daten und deren Verarbeitung befassen möchte ich auf die Datenquelle und deren Verfügbarkeit zu sprechen kommen. Bei einmaliger Beschaffung von Daten z.B. für Analysen und Auswertung ist dies noch kein grosses Problem. Doch sobald Daten immer wieder beschafft werden sollen z.B. monatliche Reports, muss ein Automatismus möglich sein. Damit Daten einfach, automatisch verarbeitet werden können, sollte auch die Beschaffung (Download, Speicherung) automatisch funktionieren. Hier sind aber schon oftmals die ersten Hürden anzutreffen. Download-Portale welche erst nach Eingabe von Formularfeldern einen Download anbieten sind schwierig in einen Automatismus zu integrieren. Was für uns Menschen ein paar Klicks bedeutet, kann für die automatische Verarbeitung schon zum Show-Stopper werden. Daten sollten wenn möglich über API oder andere einfache Mechanismen angeboten werden können. Links sollten sich wenn immer möglich nicht ändern, oder nach einem klaren Schema definiert sein.

Auch wenn Daten auf einer Webseite z.B. als Liste angeboten werden, können diese nur mit Aufwand automatisch gespeichert und weiterverarbeitet werden. Für uns Menschen ist ein Copy&Paste schnell erledigt, doch Webseiten zu lesen und zu verarbeiten bedarf einiges an Programmierung und kann schnell einen grossen Aufwand bedeuten.

 

Datenformate

Wenn man nun die Datenquelle und deren Daten organisiert hat, kommt die nächste Herausforderung. Wie sind die Daten gespeichert, in welchem Format liegen diese vor.

Ein sehr oft verwendetes Datenformat für downloads ist CSV (Comma Separated Values), eine Textdatei welche die Daten in tabellarischer Form speichert. Dies ist sehr gut für die weitere Verarbeitung geeignet, da nahezu alle Programme und Programmiersprachen mit diesen Formaten umgehen können. Ein Nachteil dabei ist aber, dass in einem CSV keinerlei Informationen zu den Datentypen vorliegen. Z.B. ist nicht klar ob es sich bei einer Spalte mit Zahlen um eine Währung, Zahl, Temperatur usw.. handelt. Auch kann nicht sicher gesagt werden ob es sich um eine gerundete Zahl oder den effektiven Wert handelt. In den meisten Fällen kann man anhand der Datenquelle und deren Bedeutung die Herleitung machen, um was es sich handelt. Trotzdem kann es zu Missverständnissen kommen. Nehmen wir mal an, wir haben eine Spalte mit Datum und Uhrzeit. Erstens wäre es besser wenn das Datum und die Uhrzeit in je einer Spalte liegen würden, zum anderen gibt es aber keinerlei Hinweise um welche Zeit es sich handelt. Also, ist die Zeit die lokale Zeit und wenn ja, was ist die lokale Zeit der Datenquelle? Oder ist die Zeit von einer anderen Zeitzone, oder universal Zeit?

 

Wir könnten hier nun über jegliche Datenformate sprechen die es gibt und deren Vor- und Nachteile. Zusammengefasst kann man aber folgendes sagen, was immer berücksichtigt werden sollte:

Die effektiven Daten sollten immer in einer Tabellenform vorliegen. Jede Spalte sollte klar definiert sein um was es sich handelt. Ausser einem Header (Erste Zeile mit Spaltennamen) sollte sich nichts Weitere in der Quelldatei befinden.

Jede Datenquelle sollte weiter eine Beschreibung haben, was für ein Format jede Spalte besitzt. z.B. sollte bei einer Spalte mit Datum und Zeit beschrieben sein, um welche Zeitzone es sich handelt. Bei Fliesskommazahlen sollte beschrieben sein, ob es sich um gerundete Zahlen handelt. Bei Textspalten wäre es hilfreich zu wissen, was die maximale Zeichenlänge ist usw….  Diese Beschreibungen sollen unter keinen Umständen in der Datei der Daten sein, sondern separat angeboten werden. Ausnahme sind z.B. Datenformate wie Parquet, welche per Definition schon die Datentypen in der Datei Beschreiben.

Ein ganz wichtiger Punkt noch zum Abschluss dieses Themas sind die allgemeinen Dateiformats-Definitionen. Dazu gehört das Encoding, also in welchem Format wurde die Datei gespeichert. Da es diverse Formate wie Unicode UTF-8, UTF-16, Windows Latin 1 usw… gibt,  ist dies eine wichtige Information, damit Sonderzeichen auch korrekt angezeigt werden. Oftmals kann man dies manuell herausfinden, doch die Information direkt zu erhalten erleichtert die Arbeit sehr. Darunter fällt auch die Information des Zeilenumbruchs (Neue Zeile). Auch diese kann sich von den Steuerzeichen her je nach Betriebssystem unterscheiden. Unix, Mac und Windows besitzen da unterschiedliche Definitionen.

 

Excel als Datenformat

Da man Excel als die häufigste Form der Datenverarbeitung antrifft möchte ich hier explizit darauf eingehen. Excel hat den grossen Vorteil (Und gleichzeitig auch Nachteil) dass man Daten zusammen mit der visuellen Formatierung nutzen und präsentieren kann. Auch hier ist es für uns Menschen ein grosser Vorteil aus einer einfachen Tabelle eine grafisch angereicherte Tabelle mit Summe, farbigen Flächen, Titel, Beschreibung und Formeln zu machen, welche viel einfacher zu lesen und verstehen ist. Wer sich mit Makro auskennt weiss, dass diese kleinen Helfer die halbautomatische Verarbeitung unterstützen können.

Wenn man aber Excel-Dateien für die automatische Verarbeitung bekommt, ist dies selten ideal. Titel, Beschreibungen usw.. können noch einigermassen einfach entfernt werden (Sofern diese sich immer am selben Ort befinden), doch Zellen mit Formeln und Unterbrüche von Tabellen durch Zwischensummen machen eine Verarbeitung teilweise unmöglich oder sehr aufwendig.

Möchte man also Excel als Download-Format anbieten sollte immer eine alternative wie CSV dazu angeboten werden damit die maschinelle Verarbeitung möglich ist.

 

CSV richtig nutzen

Was für alle Formate gilt, aber oftmals bei CSV-Dateien nicht immer eingehalten wird ist die klare Definition wo eine Spalte beginnt und wo diese endet. Eigentlich ist eine CSV-Datei eine Datei die Spalten durch Komma trennt. Oftmal sieht man aber auch TAB oder Strichpunkte als Trennzeichen. Problematisch kann dies dann werden, wenn es z.B. eine Spalte mit Texte hat, in welchem sich wieder ein Text mit Komma, Strichpunkt oder TAB befindet. Um diesem Problem entgegen zu wirken, ist definiert dass Texte zwischen Anführungs- und Schlusszeichen zu stehen haben, Nummerische Werte wiederum müssen dies nicht haben. Was aber wenn man nun Text hat dies selber „;“ beinhalten? Man sieht also, das Datenformat zur Speicherung von Daten sollte immer so gewählt werden, dass die darin enthaltenen Daten das Format selber nicht beeinflussen.

 

Beispiele von Problemen zur automatischen Verarbeitung

Nachdem wir nun die Daten in einem Idealen Format vorliegen haben und auch wissen, mit was für Daten wir es zu tun haben, kommt die nächste Stufe der Verarbeitung. Dabei geht es um die Qualität der Daten. Um dies zu verdeutlichen ein paar Beispiele dazu:

 

Fehlende Werte

Selten ist eine Spalte zu 100% mit gültigen Werten ausgefüllt. Fehlende Werte können z.B. auftauchen wenn ein Messwert fehlt, es einfach keinen Wert braucht, Daten verloren gingen, Unterbrüche bei der Erfassung gab usw… Das wichtigste dabei ist, dass fehlende / nicht gültige oder unbekannte Werte klar gekenntzeichnet sind. Und diese Kennzeichnung sollte auch dokumentiert sein. In einer Textspalte ist meistens das leere Feld ein indiz dafür, doch bedeutet dies nun dass es keinen Eintrag gibt oder dieser fehlt? Bei Zahlen, Währungen und sonstigen Nummersichen Spalten ist eine Kennzeichnung durch Zeichen wie NA, NONE, NAN usw.. nicht ideal, da bei der Verarbeitung oftmals die Spalte als nummerisch definiert werden möchte, doch das vorhanden sein von Zeichenketten dies dann behindern. Leer lassen ist oftmals besser, oder bei nur positiven Zahlen könnte auch z.B eine -1 genutzt werden. Auch hier wichtig dass die dokumentiert ist.

 

Kommastellen und tausender Trennzeichen

Prinzipiell haben ausser Dezimaltrennzeichen keinerlei andere Zeichen etwas in nummerischen Spalten zu suchen. Ein Computer kann sehr gut mit grossen Zahlen umgehen und braucht keine visuelle Hilfe. Beim Dezimaltrennzeichen sind meistens Punkt oder Komma in Gebrauch. Auch hier gibt es Unterschiede, je nach System, Lokation, usw… In einer Datenquelle sollten Dezimaltrennzeichen unter keinen Umständen gemischt werden, entweder Punkt oder Komma.

Auch sieht man teilweise Leerzeichen, oftmals am Anfang oder Schluss der Werte. Was für uns unsichtbar und somit irrelevant ist, kann für die Verarbeitung mit dem Computer sehr aufwendig werden. Vermeiden Sie unbedingt Leerzeichen, diese haben höchstens in Fliesstext etwas zu suchen.

 

Datum und Uhrzeit

Sobald Datum und Uhrzeit als Daten vorliegen, ist besondere Aufmerksamkeit gefordert. Zuerst sollte man idealweise Datum und Uhrzeit in unterschiedlichen Spalten aufführen. Oftmals passiert es sonst dass diese als Zeichenkette erkannt werden und programmiertechnisch getrennt werden müssen. Der ideale Datum/Uhrzeit Beschrieb für die automatische Weiterverarbeitung ist ein Zeitstempel (Timestemp) da dieser ein nummerischer Wert ist, welcher eindeutig ist. Ist dies aber nicht möglich (Datum vor 1.1.1970 oder nach 2038) sollte die Datumsformatierung wie auch Zeitformatierung dokumentiert sein. Je nach Land oder eingesetzter Software werden Datum mit Punkt, Schrägstrich oder Bindestrich getrennt, Monat und Tag vertauscht usw… Auch bei der Uhrzeit ist das Trennzeichen nicht immer identisch. Doppelpunkt, Hochkomma, Punkt usw… werden oft genutzt.

Fehlende Daten sollte auch hier eindeutig gekennzeichnet sein, aber nicht das Format verändern. Weitere wichtige Angabe bei der Uhrzeit ist die Zeitzone, zu welcher diese gehört.

 

Spalten mit Kategorien

Sehr viele Spalten werden mit kategorischen Daten genutzt z.B. Währung, Ortschaft, Grössen wie S,M,L, oder sonstig definierte Kategorien. Kategorien sind im Unterschied zu reinen Textspalten so definiert, dass es eine klare Anzahl möglicher Werte gibt, welche eingesetzt werden können. Damit kann man später z.B. Gruppierungen machen und Zusammenhänge zwischen Kategorien feststellen. Wichtig dabei ist das Kategorien eindeutig sind und sich immer identisch wiederholen. Vor allem bei Ortschaft sollte unter keinen Umständen einmal „Wil“ und einmal „Wil SG“ stehen, da dies als unterschiedlich erkannt würde.

Am einfachsten um mit Kategorien umzugehen wäre, man bekommt eine separate Datendatei mit allen möglichen Kategorien und deren ID als Metadaten. In den effektiven Daten würde dann in der Spalte „Ortschaft“ nur noch die dazugehörige ID der Ortschaft stehen und somit die Verarbeitung massiv vereinfachen.

 

Beispiel Währung mit Metadaten

 

Preis WährungsID
100 3
130 2
120 1
130 3
ID Währung
1 CHF
2 $
3 Euro

 

Weiteres

Wenn man Prozentangaben macht, sollte dies mit nummerischen Werten gemacht werden und die Spalte entsprechend beschriftet sein. Prozentzeichen nach einem nummerischen Wert führen eher zu Problemen als dass diese hilfreich wären.

Gleich verhält es sich auch mit weiteren Sonderzeichen. Nach wie vor können diese bei systemübergreifenden Verarbeitungen zu Problemen führen, wenn diese falsch interpretiert werden oder der Computer auf eine andere Region / Land eingestellt ist.

 

Kontinuität der Verarbeitung

Oftmals möchte man Daten nicht einmalig sondern kontinuierlich aktualisieren. Je nach Veränderung der Daten kann dies jährlich, monatlich, oder noch in kürzeren Abständen passieren bis hin zu Echtzeit. Wichtig dabei ist, dass sich das Format und die Struktur der Daten nicht ändert, so dass die weitere Verarbeitung immer möglich ist.

Kann dies nicht über längere Zeit gewährleistet werden, sollten Datenformate wie z.B. XML, Parquet usw.. in Betracht gezogen werden. Bei Echtzeit- bzw. sehr kurzen Aktualisierungsabständen macht der Einsatz einer API Sinn. So kann ein Webservice angeboten werden, welcher einen Datenbezug nach Anforderung zulässt in einem klar strukturierten Format. Erweiterungen sind einfacher umzusetzen da diese keinen Einfluss auf die schon bestehende Struktur hat. Auch bei grösseren Aenderungen kann eine neue API-Version angeboten werden, so dass die Datenbezüger genügend Zeit für eine Anpassung haben.