Overslaan naar inhoud
Nederlands
  • Er zijn geen suggesties want het zoekveld is leeg.

Connector

De Connector is een component waarmee crandas-scripts kunnen worden uitgevoerd door een reguliere HTTP-endpoint aan te roepen, zonder dat de client zelf Python-code hoeft uit te voeren. Alle functionaliteit van crandas is beschikbaar: het uploaden, verwerken en downloaden van gegevens. Daarnaast ondersteunt de Connector de volledige analysecyclus: testen met dummydata, een recording aanmaken ter goedkeuring en uitvoeren op productiegegevens.

De Connector werkt door vooraf gedefinieerde crandas-scripts uit te voeren bij binnenkomende HTTP-verzoeken. De Connector verzorgt de encryptie en decryptie van inkomende en uitgaande gegevens die nodig zijn om met de engine te communiceren. Als een script gegevens uploadt of resultaten opent, gaan deze waarden in plaintext door de Connector. De Connector moet daarom dienovereenkomstig worden gehost. Daarnaast bevat de Connector het sleutelmateriaal van een gebruiker (private key, connection file). Iedereen die toegang heeft tot de Connector kan daardoor de scripts uitvoeren die voor die gebruiker zijn goedgekeurd.

Om te voorkomen dat de Connector toegang heeft tot plaintext-waarden, kan deze worden gebruikt in combinatie met de Web SDK. De Connector wordt dan uitsluitend gebruikt voor het verwerkingsgedeelte van een script, terwijl de SDK wordt gebruikt voor het initiële uploaden en het uiteindelijke downloaden van de gegevens. De encryptie en decryptie vinden daarbij client-side plaats.

Voorbeeld

Neem als voorbeeld het volgende crandas-script, dat een bestand uploadt.

import pandas as pd
import crandas as cd
from crandas.placeholders import Any
from fastapi import UploadFile

def run(name: str, csv: UploadFile, sep: str = ","):
df = pd.read_csv(csv.file, sep=sep)
table = cd.upload_pandas_dataframe(df)
table.save(name=Any(name))
return {
"num_rows": len(table),
"num_columns": len(table.columns)
}

Het script bevat één functie, run, die wordt uitgevoerd. Deze functie heeft drie parameters: name, csv en sep. csv moet een CSV-bestand bevatten waarin sep als scheidingsteken wordt gebruikt. Het bestand wordt opgeslagen onder de naam name. De functie retourneert het aantal rijen en kolommen in de geüploade dataset.

Voor de naam wordt een placeholder gebruikt, zodat een tabel onder een willekeurige naam kan worden geüpload. Zonder deze placeholder moet de naam hetzelfde zijn als tijdens de recording. Voor het CSV-scheidingsteken is geen placeholder nodig, omdat dit betrekking heeft op lokale verwerking.

We slaan dit script in de Connector op als upload.py. Hierdoor worden de volgende drie endpoints in de Connector aangemaakt:

  • /upload/dummy: test het script met dummydata in de ontwerpomgeving.
  • /upload/record: maak een recording met dummydata, die kan worden gebruikt om goedkeuring te verkrijgen voor productiegegevens.
  • /upload/prod: voer het script uit op productiegegevens in de geautoriseerde omgeving.

Stel dat lookup-dummy.csv een eenvoudig CSV-bestand met dummydata bevat en de Connector wordt gehost op localhost:8000. Het bestand kan dan met curl als volgt worden geüpload:

$ curl 'http://localhost:8000/upload/dummy?name=lookup' -F 'csv=@lookup-dummy.csv;type=text/csv'

{"num_rows":10,"num_columns":2}