LF 8 · Daten systemübergreifend · 26/42 · 65 Min. angesetzt – Langform, jedes Wort zählt
Formate und Qualität
Das Format ist die Schreibweise des Vertrags, nicht der Vertrag selbst. CSV, JSON, XML, EDI – ohne vereinbarten Zeichensatz stirbt der Umlaut, ohne Schema stirbt das Pflichtfeld, ohne Qualitätsregel wandert Müll und kommt als Kennzahl zurück. Dieses Kapitel bleibt bei dem, was auf dem Draht oder in der Datei steht. Berechtigungen über Systeme sind das nächste. Wer hier schon SSO erklärt und den Zeichensatz vergisst, liefert schöne Tokens und kaputte Namen.
CSV sieht harmlos aus und lügt häufiger als XML. Trennzeichen Komma gegen Semikolon, Dezimalpunkt gegen Komma, Kopfzeile ja oder nein, Anführungszeichen in Feldern, Zeilenende Windows gegen Unix, UTF-8 mit oder ohne BOM gegen Windows-1252. Ein Lieferant in 1252, ein Empfänger, der UTF-8 erwartet: aus Müller wird Müll. Das ist kein Pech, das ist ein ungeklärtes Feld im Vertrag. JSON kennt Typen und Umlaute, wenn UTF-8 gilt, und kennt keine verbindliche Feldliste, solange niemand ein Schema zur Pflicht macht. XML mit XSD ist streng und in der Praxis oft eine Version älter als der Sender. EDI und Branchenformate sind Verträge mit Code-Listen – ohne die Liste ist der Code 20 ein Orakel.
Was ihr verbindlich macht, bevor der Job läuft
Format
CSV, JSON, XML, EDI, oft proprietäre Sätze. Versionieren. Ein stilles neues Pflichtfeld in Version „gleicher Dateiname“ ist ein Bruch, kein Update.
Zeichensatz
UTF-8 klar vereinbart, BOM ja oder nein, Alternativen nur mit Namen. „Text“ ist kein Zeichensatz. Umlaut, Euro, polnische Kunden – das sind Testfälle, nicht Sonderwünsche.
Schema / Feldkatalog
Namen, Typen, Pflicht, Längen, erlaubte Werte, Beispielzeilen. Ohne Beispielzeile mit Umlaut, Leerzeichen und leerem optionalem Feld testet ihr die Sonne, nicht den Regen.
Takt und Menge
Täglich vollständig, stündlich delta, Event einzeln. Volllieferung ohne Truncate-Regel doppelte Sätze. Delta ohne Lückenkennung verliert den Dienstag. Beides muss im Vertrag stehen, nicht im Bauch des Jobs.
Qualität ist keine Stimmung nach dem Import. Vollständig: Pflichtfelder da, Satzzahlen stimmen gegen den Trailer oder gegen die Quellzählung. Aktuell: Zeitstempel der Quelle, nicht der Importuhr. Eindeutig: derselbe Schlüssel nicht zwei Wahrheiten. Konsistent: Auftragskopf ohne Position ist ein Bruch gegen die Regel, nicht „der Kunde hat das so geschickt“. Korrekt gegen ein Referenzmaß, wo eines existiert – Steuernummer, EAN, IBAN-Prüfziffer. Müll in der Schnittstelle bleibt Müll in der Auswertung. Nachgelagerte BI-Kosmetik heilt die Quelle nicht, sie macht den Schaden teurer, weil ihm dann jemand glaubt.
Qualität
Vollständig, aktuell, eindeutig, konsistent, im vereinbarten Format. Jede Dimension braucht einen messbaren Check, sonst ist „gute Daten“ ein Wunsch. Reject-Datei und Quarantäne sind Teil der Schnittstelle, nicht Unhöflichkeit gegenüber dem Sender.
Mapping
Feld A wird zu Feld B, Code 1 wird zu „offen“. Mapping ohne Version und ohne Verantwortlichen fault still, wenn das Quellsystem einen neuen Status erfindet. Unbekannte Codes verwerfen oder halten – beschließen, nicht raten.
- Zeichensatz, Trennzeichen, Schema, Beispiel mit Umlaut schriftlich.
- Zählung: Quellzahl gegen Empfangszahl, jede Nacht, nicht nur nach Beschwerden.
- Reject mit Grund, nicht stilles Wegwerfen.
- Monitoring: Jobzeit, Satzzahl, Fehlerrate, Alter des letzten erfolgreichen Laufs.
- Änderung am Format ist ein Change (LF 6): Ziel, Risiko, Fenster, Rollback auf die alte Version.
python3 -c "open('in.csv','rb').read(4)" # BOM?
file -i lieferung.csv
# JSON grob
python3 -m json.tool < ereignis.json >/dev/nullPrüfung