Massenexporte
Ein Export ist ein Job, kein Request. Sie fordern ihn an, er läuft, und Sie holen eine Datei ab — deshalb kann er eine Million Zeilen bewegen, ohne Ihre Sekunden-Zuteilung der API anzufassen.
Zwei verschiedene Dinge namens „Export"
| Massenexport | Berichtsexport | |
|---|---|---|
| Was es ist | Eine Datei mit Datensätzen aus einem Datenbestand | Ein CSV eines Berichts, den Sie ausgeführt haben |
| Volumen | Bis zu einer Million Zeilen | Was in eine Tabelle passt |
| Wer ihn fährt | Ein Zeitplan, oder eine Integration | Eine Person, am selben Tag |
| Wo | Data Exchange › Import & Export | Analytics › Reports |
| Wofür | Ein anderes System füttern | Heute eine Frage beantworten |
Will jemand im Controlling die Bestellungen des letzten Quartals nach Kunde, will er einen Berichtsexport, keine Integration. Schicken Sie ihn dorthin, bevor Sie irgendetwas bauen.
Ein Exportprofil definieren
Ein Profil ist die wiederverwendbare Definition: was exportiert wird, welche Felder, in welchem Format, wie gefiltert. Anlegen unter Data Exchange › Import & Export.
Vier Entscheidungen:
1. Der Datenbestand. Produkte, Preise, Bestellungen, Kunden, Bestand — was Ihre installierten Apps bereitstellen.
2. Die Felder. Exportieren Sie die, die der Empfänger nutzt, und die Schlüssel, über die er joint. Zwei Felder, die vergessen und dann gebraucht werden: der Geschäftsschlüssel (SKU, Kundennummer, Bestellnummer) und ein Zeitstempel, damit der Empfänger erkennt, was sich geändert hat.
3. Filter. Ein Filter im Profil schlägt das Nachfiltern einer riesigen Datei. Nur veröffentlichte Produkte, nur Bestellungen seit einem Datum, nur ein Kanal.
4. Voll oder Delta. Derselbe Zielkonflikt wie beim Import, umgekehrt:
| Vollexport | Delta-Export | |
|---|---|---|
| Volumen | Alles, jeder Lauf | Nur Geändertes |
| Laufzeit | Lang | Kurz |
| Ein verpasster Lauf | Vom nächsten repariert | Hinterlässt eine dauerhafte Lücke |
| Löschungen | Sichtbar — abwesend heißt weg | Nur, wenn Sie ein Löschsignal exportieren |
| Gut für | Nächtlich, bis einige hunderttausend Zeilen | Sehr große Bestände, oder häufige Läufe |
Ein tragfähiger Kompromiss, bei dem die meisten Projekte landen: Deltas unter der Woche, ein Vollexport am Wochenende, der repariert, was die Deltas verpasst haben.
Das Format bewusst wählen
Vier stehen zur Verfügung, und die Wahl hängt nicht nur an den Vorlieben des Empfängers.
| Format | Gut für | Vorsicht |
|---|---|---|
| CSV | Der Standard für alles Große | Keine Typen — Daten und Dezimalzahlen brauchen eine vereinbarte Konvention |
| XML | Empfänger, die ein Schema erwarten, BMEcat-förmige Feeds | Geschwätzig; die Datei ist um ein Mehrfaches größer |
| JSON | Systeme, die nativ JSON konsumieren | Im Speicher gepuffert, bevor geschrieben wird — eine schlechte Wahl für die allergrößten Bestände |
| XLSX | Ein Mensch, der sie öffnet | Im Speicher gepuffert, und eine Tabelle ist keine Schnittstelle |
Die praktische Regel: CSV und XML streamen Zeile für Zeile; JSON und XLSX werden zuerst im Speicher aufgebaut. Für einen Export mit einer Million Zeilen nehmen Sie CSV oder XML. Besteht der Empfänger bei dieser Größe auf JSON, teilen Sie in mehrere Dateien.
Zwei Konventionen einmal vereinbaren und in die Profilbeschreibung
schreiben, denn sie verursachen mehr Support-Tickets als alles andere auf
dieser Seite: das Dezimaltrennzeichen und das Datumsformat. Ein CSV
in deutscher Locale mit 19,90, gelesen von einem System, das 19.90
erwartet, erzeugt Preise, die um den Faktor hundert falsch sind — ohne
jeden Fehler.
Zeitlich planen
Zwei Wege, je nachdem, wer steuert.
Aus einem Workflow — die übliche Wahl. Bauen Sie ihn in Integration Studio: ein Zeitplan-Trigger, der Exportschritt, ein Zustellschritt. Der Lauf behält sein Protokoll, Sie sehen also, was passiert ist, und können ihn wiederholen.
Aus einer Integration — wenn das empfangende System entscheidet. Das Profil anstoßen und den Job abfragen:
POST /v1/io/profiles/{id}/run → startet den Job
GET /v1/io/bulk-jobs/{job_id} → Zustand, Zeilen gelesen / geschrieben / abgewiesen
GET /v1/io/exports/{job_id}/url → eine kurzlebige signierte Download-URL
Egal welcher Weg: Geben Sie schweren Exporten ein eigenes Fenster. Das Rate-Limit gilt je Tenant, ein großer Export in Konkurrenz zu Ihrer Storefront ist also eine langsame Storefront — siehe Rate-Limits, Kontingente und Fair Use. Staffeln Sie Jobs, statt sechs davon exakt zur vollen Stunde zu starten.
Die Datei zustellen
| Ziel | Wann |
|---|---|
| Eine signierte Download-URL | Der Empfänger holt ab, nach eigenem Zeitplan. Am schlichtesten, und die URL ist absichtlich kurzlebig |
| SFTP-Ordner | Der Empfänger beobachtet einen Ordner. Die häufigste Antwort für einen ERP- oder BI-Job — siehe SFTP und Dateiaustausch |
| Ein Workflow-Schritt | Die Datei muss unterwegs transformiert, geteilt oder irgendwohin gepostet werden |
Bei jedem Ziel gilt die Namenskonvention:
orders_delta_20270312_0200.csv. Nie überschreiben, und verarbeitete
Dateien in einen Archivordner verschieben statt löschen. Der
Wiederholungslauf, der Ihren Abend rettet, hängt daran, dass die Datei noch
existiert.
Was Sie prüfen
Nach dem ersten geplanten Lauf:
- Die Zeilenzahlen am Job — gelesen, geschrieben, abgewiesen. Abgewiesene Zeilen über null bedeuten ein Mapping-Problem, und ein Job, der mit 4.000 Abweisungen „erfolgreich" war, ist kein Erfolg.
- Die Dateigröße ist plausibel. Ein Export, der plötzlich ein Zehntel der letzten Nacht misst, ist ein geänderter Filter, kein ruhiges Quartal.
- Der Empfänger hat sie tatsächlich geladen, nicht nur empfangen.
- Die Laufzeit lässt Luft. Ein Job, der in einem Ein-Stunden-Fenster 50 Minuten braucht, scheitert beim ersten Wachstum Ihres Katalogs.
Wenn es nicht funktioniert
- Der Job wird nie fertig — meist ein JSON- oder XLSX-Export in einer Größe, die CSV hätte sein sollen.
- Zahlen oder Daten kommen falsch an — die Konvention für Dezimaltrennzeichen oder Datumsformat. Kein Bug; eine nicht ausgesprochene Vereinbarung.
- Die Datei kommt an, ist aber leer — ein Filter im Profil, oder ein Delta-Export, nachdem ein Vollexport bereits alles mitgenommen hat.
- Die Download-URL ist abgelaufen — signierte URLs sind absichtlich kurzlebig. Holen Sie sie als Teil des Jobs, nicht Stunden später.
- Gar nichts kam an, und nichts ist fehlgeschlagen — der Lauf ist nicht gestartet. Das ist der Fehler, den niemand bemerkt; siehe Integrationen überwachen.
Weiter
- Integrationen überwachen — einschließlich des Alarms „keine Datei angekommen".
- Häufige API-Aufgaben nach Job — die eingehende Hälfte.
Häufige API-Aufgaben nach Job
Bestellungen heraus, Bestand hinein, Preise hinein, Kundenstamm hinein — die vier Jobs, aus denen fast jede ERP-Integration besteht, jeder mit Ressource, Form, Webhook-Alternative und Falle.
Eine Integration durchgängig testen
Fixtures, Webhook-Replay, die Idempotenztests, die die meisten Projekte auslassen, und eine Go-live-Checkliste, an der Sie einen Integrator tatsächlich messen können.