Prozess: Datensatz hochladen (CSV)¶
Das Hochladen eines CSV-Datensatzes ist einer der fachlichen Kernprozesse der ODI. Er bündelt in einem einzigen Aufruf die Qualitätssicherung, das Anlegen des Datensatzes, die Erzeugung mehrerer Repräsentationen, die Veröffentlichung und – je nach Dateninhalt – die geografische Aufbereitung.
Dieses Kapitel beschreibt die fachliche Ablauflogik hinter dem Endpunkt
POST /upload/csv des Staging-Backends. Technische Details der Schnittstelle (Felder,
Beispiele, Authentifizierung) finden sich in der
API-Referenz und im Guide
Datensatz hochladen per API. Die Einordnung des
Staging-Backends in das Gesamtsystem zeigt die Architektur-Übersicht.
Auf einen Blick¶
Der Aufruf übergibt in einem HTTP-Multipart-Request die CSV-Datei zusammen mit ihren Metadaten und einem Zugriffstoken. Das Backend prüft die Daten, legt – nur bei erfolgreicher Prüfung – einen Datensatz an, erzeugt daraus mehrere Formate und veröffentlicht das Ergebnis. Optional werden enthaltene Geodaten zusätzlich als Geodienste bereitgestellt.
Eingaben¶
| Eingabe | Beschreibung |
|---|---|
| CSV-Datei | Die hochzuladenden Daten. |
| Schema-Bezug | schemaId + schemaVersion – verweist auf das erwartete Schema im Schema-Repository. |
| Lese-Parameter | delimiter (Trennzeichen), encoding (Zeichensatz), optional quote – beschreiben, wie die CSV-Datei zu lesen ist. |
| Metadaten | Titel, Beschreibung, Lizenz, Publisher, Kategorien, Raumbezug, Zeitbezug (Start-/Enddatum), Katalog, frei wählbare Datensatz-ID. |
| Token | Keycloak-JWT für Authentifizierung und Autorisierung. |
Der Ablauf Schritt für Schritt¶
1. Anfrage prüfen & CSV validieren¶
Zu Beginn werden in einem Schritt die Voraussetzungen geschaffen:
- Authentifizierung & Autorisierung: Das mitgelieferte JWT wird geprüft; aus den enthaltenen Berechtigungen wird abgeleitet, ob der Aufrufer Datensätze anlegen und veröffentlichen darf.
- Schema laden: Anhand von
schemaIdundschemaVersionwird das passende Schema aus dem Schema-Repository geladen. Es beschreibt die erwartete Struktur der Daten (Spalten, Datentypen, ggf. Geo-Felder). - CSV validieren: Die CSV-Datei wird anhand der übergebenen Parameter (Trennzeichen, Zeichensatz, Quote) eingelesen und auf Verarbeitbarkeit geprüft.
Schlägt einer dieser Punkte fehl (ungültiges Token, fehlende Berechtigung, unbekanntes Schema, nicht lesbare Datei), wird der Vorgang abgebrochen.
2. Validierung gegen das Schema ⟸ Entscheidungspunkt¶
Die eingelesenen Daten werden inhaltlich gegen das Schema geprüft (Frictionless-Prüfung): Stimmen Spalten, Datentypen und Regeln?
Validierung ist der Türsteher
Ist die Datei nicht gültig, bricht der Prozess hier ab. Es wird eine Fehlerliste zurückgegeben und kein Datensatz angelegt. So gelangen niemals fehlerhafte oder unvollständige Datensätze in den Katalog. Erst bei erfolgreicher Validierung geht es weiter.
3. Datensatz im Datenkatalog anlegen¶
Aus den Metadaten wird ein Datensatz im Datenkatalog erzeugt. Die Datensatz-Beschreibung
wird dabei automatisch um eine aus dem Schema generierte fachliche Beschreibung ergänzt. Ab hier
existiert der Datensatz und erhält seine Identität (datasetId).
4. Repräsentationen erzeugen & ablegen¶
Zum Datensatz werden mehrere Distributionen (Repräsentationen derselben Daten) erzeugt und abgelegt, damit unterschiedliche Nutzungsszenarien bedient werden:
| Repräsentation | Zweck |
|---|---|
| CSV (Original) | unveränderte Ausgangsdatei inkl. Hinweis auf Zeichensatz und Trennzeichen |
| Tabular Data Resource (TDR) | formale, maschinenlesbare Beschreibung der Tabelle |
| Parquet | spaltenorientiertes Format für analytische Verarbeitung |
| JSON | bequeme programmatische Weiterverarbeitung |
5. RDF erzeugen → Semantic Data¶
Aus dem Datensatz wird eine RDF-Repräsentation erzeugt und an den Triple Store übergeben. Damit werden die Daten Teil des Linked-Open-Data-Bestands und später über den SPARQL-Endpunkt abfragbar.
6. Geodaten-Zweig ⟸ Entscheidungspunkt (optional)¶
Enthält das Schema Geo-Felder, durchläuft der Datensatz zusätzlich die geografische Aufbereitung:
- CSV → GeoJSON konvertieren
- GeoJSON und GeoParquet in den Datenkatalog hochladen
- GeoJSON in die GIS-Datenbank / den UDP-Manager übernehmen
- Datensatz mit dem Masterportal (Kartenansicht) verlinken
- WFS- und WMS-Dienst verknüpfen
Geodaten sind ein zusätzlicher, robuster Zweig
Enthält das Schema keine Geo-Felder, wird dieser Zweig übersprungen. Tritt innerhalb des Geodaten-Zweigs ein Fehler auf, wird er protokolliert, bricht den Upload aber nicht ab – der eigentliche Datensatz bleibt erhalten und gültig.
7. Datensatz veröffentlichen¶
Zum Abschluss wird der Datensatz veröffentlicht: Er erhält eine Portal-/Katalog-URL und
ist damit im Datenkatalog auffindbar. Der Aufruf liefert die datasetId und die
datasetUrl zurück. Je nach Aufbereitung ist der Datensatz zusätzlich als Linked Open Data
und als Geodienst verfügbar.
Zusammenfassung der Entscheidungspunkte¶
| Entscheidung | „Ja“ | „Nein“ |
|---|---|---|
| CSV gültig gegen Schema? (Schritt 2) | Weiter: Datensatz anlegen | Abbruch mit Fehlerliste, kein Datensatz |
| Schema enthält Geo-Felder? (Schritt 6) | Geodaten-Zweig durchlaufen (Fehler nicht fatal) | Geodaten-Zweig überspringen |
Verwandte Prozesse¶
Der Endpunkt POST /upload/csv ist Teil einer Familie von CSV-Operationen des Staging-Backends:
PUT /upload/csv/overwrite/{datasetId}– einen bestehenden Datensatz mit einer neuen CSV-Datei überschreiben.PUT /upload/csv/complete/{datasetId}– einen Datensatz abschließen/vervollständigen.POST /upload/csv/append– Daten an einen bestehenden Datensatz anhängen.
Diese folgen demselben fachlichen Grundgedanken (validieren → schreiben → veröffentlichen) und sind in der API-Referenz beschrieben.