Die 88 %
Fast neun von zehn Verkäufen fielen unbemerkt heraus. Warum Datenqualität eine eigene Aufgabe ist.
Die Zahlen sahen gut aus. Umsatz pro Monat, sauber nach Kanal getrennt, die Kurven plausibel, keine Fehlermeldung im Protokoll. Das Einzige, was nicht passte, war ein Gefühl: Ein ganzes Geschäftsjahr wirkte erstaunlich ruhig.
Es war nicht ruhig. Es fehlte fast alles.
Der Filter, der zu viel wusste
Bevor Pythia rechnet, sortiert es Belege: Verkauf, Retoure, Gutschrift, Storno. Dafür liest es ein Kennzeichen am Beleg aus. In einer frühen Fassung war dieses Kennzeichen fest im Code verdrahtet – mit genau dem Wert, den die Belege des laufenden Jahres trugen.
Was niemand bedacht hatte: Das ERP zählt die erste Stelle dieses Kennzeichens beim Jahreswechsel weiter. Belege aus anderen Jahren sahen für den Filter aus wie etwas anderes und fielen still heraus. Am Ende fehlten fast neun von zehn Verkäufen in den Auswertungen.
Warum es niemand merkte
Pythia hatte eine Prüfung, die nach jedem Import zählt, ob alles angekommen ist. Sie meldete: alles in Ordnung. Der Grund war so einfach wie unangenehm – die Prüfung benutzte denselben Filter wie der Import. Sie verglich den Fehler mit sich selbst und fand keinen Unterschied.
Eine Prüfung, die dieselbe Logik verwendet wie das, was sie prüfen soll, prüft nichts.
Zwei weitere stille Fehler
Als wir einmal genau hinsahen, fanden wir mehr:
- Anführungszeichen im Artikelnamen. Die Exportdateien des ERP halten sich nicht an die üblichen CSV-Regeln: Anführungszeichen in Artikelnamen stehen dort ohne Maskierung. Ein toleranter Parser las ab einer solchen Stelle einen großen Teil einer ganzen Jahresdatei als ein einziges, riesiges Feld – und meldete Erfolg.
- Zwei fehlende Spalten. Einer Jahresdatei fehlten zwei von 76 Spalten. Der Import übersprang daraufhin die ganze Datei, ohne dass es jemandem auffiel.
Keiner dieser Fehler war spektakulär. Gefährlich waren sie, weil sie leise waren. Jeder einzelne hätte eine Prognose, einen Vorjahresvergleich oder eine Einkaufsentscheidung verfälscht, ohne dass irgendwo ein Warnlicht angegangen wäre.
Was wir daraus gemacht haben
- Die Prüfung zählt jetzt unabhängig vom Import, getrennt für jeden Belegtyp, und meldet ihr Ergebnis an den, der den Import gestartet hat – nicht nur in ein Protokoll, das niemand liest.
- Jede Zeile einer Exportdatei muss die erwartete Zahl an Feldern haben. Eine Zeile, die das nicht tut, ist ein Befund, kein Grund zum Raten.
- Spalten, die nicht jede Jahresdatei hat, sind als optional markiert und blockieren den Import nicht mehr.
Danach standen mehr als zehnmal so viele Verkäufe in den Auswertungen wie vorher. Und das ruhige Geschäftsjahr war plötzlich ein ganz normales.
Für uns folgte daraus ein Grundsatz, der seitdem für alles gilt, was Pythia einliest: Datenqualität ist kein Nebenprodukt, sondern eine eigene Aufgabe. Pythia korrigiert die Daten nicht eigenmächtig, sondern macht Fehler sichtbar – sortiert danach, wie stark sie das Ergebnis verfälschen, nicht danach, wie viele es sind.
Im nächsten Monat: Wenn die Daten stimmen, wollen wir sie alle sehen – jedes Jahr, zurück bis 2015.