Data-pipelines

Data ophalen, omvormen en doorsturen op een vast schema

Wat is een data-pipeline?

Een data-pipeline is een trigger met daarachter een reeks stappen. De trigger bepaalt wanneer de pipeline draait (met een vast interval of dagelijks op een vast tijdstip); elke stap krijgt de uitvoer van zijn voorganger en kiest zelf op welke databron hij draait. Zo haal je bijvoorbeeld periodiek data op bij een extern systeem en schrijf je die in je database, of stuur je elke nacht een overzicht naar een partner.

Waar een webhook direct reageert op een wijziging in de database (push), draait een pipeline op een schema en kan hij data ook ophalen (pull) en combineren.

Instructievideo: pipeline "Zendingstatus bijwerken" die elk kwartier de status van zendingen ophaalt bij de transporteur en in het ERP bijwerkt.

Stap 1: Pipeline aanmaken

Klik in het menu op Data pipelines en daarna op Nieuw. Geef een naam en omschrijving. Vink Waarschuwen bij een mislukte uitvoering aan om een e-mail te krijgen als een uitvoering mislukt.

Nieuwe pipeline
Nieuwe pipeline "Zendingstatus bijwerken".

Stap 2: Trigger toevoegen

Klap de pipeline open met het pijltje voor de naam en klik op Trigger toevoegen. Kies:

Trigger elk kwartier
Trigger: elke 15 minuten.

Stap 3: Stappen toevoegen

Klik op Step toevoegen en kies het type:

Type Wat de stap doet
Dataset ophalen Voert een dataset uit op de gekozen databron. Parameters van de dataset worden gevuld met de velden uit de invoer.
Externe API aanroepen Roept een extern endpoint aan (zie Externe endpoints). De invoer gaat als request body mee; het antwoord is de uitvoer.
Interne API aanroepen Voert een API-endpoint van SQLio uit met een stored procedure of een tabel-POST, op de gekozen databron. De velden van het invoer-object worden de parameters. Ook endpoints van het type Intern (niet zichtbaar in Swagger) zijn te kiezen.
JSON samenstellen Maakt nieuwe JSON op basis van een sjabloon, bijvoorbeeld om de invoer in een ander formaat te zetten of vaste velden toe te voegen.
Stap Externe API
Stap 2: de zendingen ophalen bij de transporteur.
Stap Interne API
Stap 4: de statussen bijwerken via een interne API op databron nl.

Instellingen per stap

Instelling Toelichting
Omschrijving Staat in de lijst en in het logboek.
Databron Bij Dataset en Interne API: de connectie-alias waarop de stap draait. Elke stap kan een andere databron gebruiken, zodat één pipeline data tussen databases kan verplaatsen.
Invoer van Standaard de vorige stap. Kies een eerdere stap om diens uitvoer te gebruiken, of Geen invoer (bijvoorbeeld voor een GET zonder body).
Als deze step faalt De pipeline stopt, Doorgaan naar de volgende step, of Springen naar een latere step.
Maximaal aantal pogingen Bij Externe API. Leeg = de algemene instelling. 408, 429 en 5xx worden opnieuw geprobeerd; andere 4xx-fouten niet.
Timeout Bij Externe API: maximale wachttijd in seconden.
In batches versturen Bij Externe API: een grote lijst wordt in delen van Records per batch verstuurd. Een batch die na alle pogingen blijft falen wordt vastgelegd; de volgende gaat gewoon door.
Actief Een inactieve stap wordt overgeslagen.

JSON samenstellen: sjablonen

Stap JSON samenstellen
De lijst van de transporteur als één veld zendingen voor de volgende stap.
Placeholder Resultaat
"{{input}}" De invoer zoals hij is: een object blijft een object, een lijst een lijst.
["{{input}}"] Een lijst met de records uit de invoer.
"{{now}}", "{{now:yyyy-MM-dd}}" Het begintijdstip van de uitvoering, eventueel in een eigen formaat.
"{{runId}}" Het nummer van de uitvoering.
Tip: Een Interne-API-stap gebruikt alleen de velden van het bovenste JSON-object als parameters. Krijg je een lijst binnen, zet die dan met een sjabloon als { "zendingen": "{{input}}" } in één veld, en verwerk hem in de stored procedure met OPENJSON.

Stap 4: Testen

Klik bij een stap op de afspeelknop (Deze step testen). SQLio draait de invoerstap en toont die uitvoer als invoer; je kunt hem aanpassen voordat je op Uitvoeren klikt. Je ziet het resultaat, de HTTP-status, de duur en de uitvoer.

Stap testen
Stap 2 getest: de transporteur geeft de zendingen terug.
Let op: Een test is een echte aanroep. Een invoerstap van het type Externe of Interne API wordt niet automatisch gedraaid (om bijwerkingen te voorkomen); plak dan zelf voorbeeld-JSON als invoer.

Stap 5: Activeren en uitvoeren

Zet de schakelaar Actief aan. SQLio controleert eerst of alle stappen compleet zijn en plant daarna de volgende uitvoering in; die zie je in de kolom Uitvoering. Met Nu uitvoeren draai je de pipeline direct; een lopende uitvoering kun je stoppen.

Pipeline met trigger en drie stappen
De pipeline: trigger en drie stappen, met per stap de databron en het gedrag bij een fout.
Tip: Pipelines zijn niet gebonden aan een testsessie; je zet ze aan en uit met de schakelaar. In productie tellen actieve pipelines mee voor de licentie.

Logboek

Met de knop Logboek zie je elke uitvoering: starttijd, status, hoe hij gestart is (Schedule of Manual) en de duur. Klap een uitvoering open voor de stappen, met per stap de status, HTTP-code, pogingen en duur, en het verstuurde bericht en de uitvoer.

Status Betekenis
Geslaagd Alle stappen zijn gelukt.
Voltooid met fouten De pipeline liep door, maar een stap (of batch) faalde.
Mislukt Een stap faalde en de pipeline is gestopt.
Overgeslagen De stap is niet uitgevoerd, bijvoorbeeld omdat hij inactief is of door een sprong.
Logboek van de pipeline
Het logboek: de uitvoering en alle stappen geslaagd.

Problemen oplossen

Situatie Oorzaak en oplossing
Activeren lukt niet Een stap is niet compleet (bijv. geen databron of endpoint). De melding noemt de stap.
Interne API gaf status 4xx/5xx De stored procedure gaf een fout of kreeg de verkeerde parameters. Controleer in het logboek wat er verstuurd is en of de veldnamen overeenkomen met de parameters.
EXECUTE permission was denied SQLioRole mist EXECUTE-rechten op de procedure. Laat de DBA die toekennen.
Menu Data pipelines ontbreekt Pipelines zijn uitgeschakeld; een SuperUser zet ze aan via Superuser beheer.