Obs!
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Programmeringsmodellen for Fabric User-datafunksjoner er en SDK som gir den nødvendige funksjonaliteten til å redigere og publisere kjørbare funksjoner i Fabric. SDK lar deg også sømløst integrere med andre elementer i Fabric-økosystemet, for eksempel Fabric-datakilder. Dette biblioteket er offentlig tilgjengelig i PyPI- og er forhåndsinstallert i elementene for brukerdatafunksjoner.
SDK for brukerdatafunksjoner
Et element for brukerdatafunksjoner inneholder én eller mange funksjoner du kan aktivere fra Stoff-portalen, fra et annet stoffelement eller fra et eksternt program ved hjelp av det angitte REST-endepunktet. Hver funksjon er en metode i Python-skriptet som gjør det mulig å sende parametere og returnere utdata til aktiveringsprogrammet. Programmeringsmodellen for brukerdatafunksjoner inneholder følgende komponenter:
Biblioteket
fabric.functions
inneholder koden du trenger for å opprette brukerdatafunksjoner i Python. Du kan se at dette biblioteket importeres i den første funksjonsmalen når du oppretter et nytt element for brukerdatafunksjoner.Metoden
fn.UserDataFunctions()
gir utførelseskonteksten. Den legges til i begynnelsen av kodefilen i alle nye elementer for brukerdatafunksjoner, før noen funksjonsdefinisjoner.Eksempel:
import datetime import fabric.functions as fn import logging udf = fn.UserDataFunctions()
Hver funksjon identifiseres med en
@udf.function()
dekoratør. Denne dekoratøren definerer om funksjonen kan aktiveres individuelt fra portalen eller en ekstern aktivering.eksempel på aktiverbar funksjon
# This is a hello fabric function sample that can be invoked from the Fabric portal, another Fabric item, or an external application. @udf.function() def hello_fabric(name: str) -> str: logging.info('Python UDF trigger function processed a request.') logging.info('Executing hello fabric function.') return f"Welcome to Fabric Functions, {name}, at {datetime.datetime.now()}!"
Alle Python-metoder uten
@udf.function()
-dekoratøren kan ikke aktiveres direkte. De kan bare aktiveres fra funksjoner som inneholder dekoratøren, og kan brukes som hjelpefunksjoner.eksempel på hjelpefunksjon
# This is a helper function that can be invoked from other functions, but can't be invoked or run directly because it doesn't have the @udf.function() decorator def uppercase_name(name: str) -> str: return name.upper()
Støttede inndatatyper
Du kan definere inndataparametere for funksjonen, for eksempel primitive datatyper som str, int, float osv. Datatypene for inndata som støttes, er:
JSON-type | Python-datatype |
---|---|
Streng | Str |
Datetime-streng | datetime |
Boolsk | Bool |
tall | int, flyt |
Matrise | list[], eksempelliste[int] |
objekt | Diktering |
Utdatatyper som støttes
Datatypene for utdata som støttes, er:
Python-datatype |
---|
Str |
datetime |
Bool |
int, flyt |
list[datatype], for eksempel liste[int] |
Diktering |
Ingen |
Datatilkoblinger til Fabric-datakilder
Med denne modulen kan du referere til datatilkoblinger uten behov for å skrive tilkoblingsstrenger i koden. Biblioteket fabric.functions
inneholder to måter å håndtere datatilkoblinger på:
- fabric.functions.FabricSqlConnection: Lar deg arbeide med SQL-databaser i Fabric, inkludert SQL Analytics-endepunkter og Fabric-lagre.
- fabric.functions.FabricLakehouseClient: Lar deg jobbe med Lakehouses, med en måte å koble til både Lakehouse-bord og Lakehouse-filer.
Hvis du vil referere til en tilkobling til en datakilde, må du bruke @udf.connection
-dekoratøren. Du kan bruke den i et av følgende formater:
@udf.connection(alias="<alias for data connection>", argName="sqlDB")
@udf.connection("<alias for data connection>", "<argName>")
@udf.connection("<alias for data connection>")
Argumentene for @udf.connection
er:
-
argName
vil navnet på variabelen som tilkoblingen skal bruke i funksjonen. -
alias
, aliaset for tilkoblingen du la til med Behandle tilkoblinger-menyen. - Hvis
argName
ogalias
har samme verdi, kan du bruke@udf.connection("<alias and argName for the data connection>")
.
Eksempel
# Where demosqldatabase is the argument name and the alias for my data connection used for this function
@udf.connection("demosqldatabase")
@udf.function()
def read_from_sql_db(demosqldatabase: fn.FabricSqlConnection)-> list:
# Replace with the query you want to run
query = "SELECT * FROM (VALUES ('John Smith', 31), ('Kayla Jones', 33)) AS Employee(EmpName, DepID);"
# [...] Here is where the rest of your SqlConnection code would be.
return results
Hent aktiveringsegenskaper ved hjelp av UserDataFunctionContext
Programmeringsmodellen inkluderer også objektet UserDataFunctionContext
. Dette objektet inneholder funksjonsmetadata og kan brukes til å opprette spesifikk applogikk for bestemte aktiveringsmekanismer.
Tabellen nedenfor viser egenskapene for objektet UserDataFunctionContext
:
Egenskapsnavn | Datatype | Beskrivelse |
---|---|---|
Aktiverings-ID | streng | Den unike GUID-en som er knyttet til aktiveringen av elementet for brukerdatafunksjoner. |
ExecutingUser | objekt | Metadata for brukerens informasjon som brukes til å godkjenne aktiveringen. |
Objektet ExecutingUser
inneholder følgende informasjon:
Egenskapsnavn | Datatype | Beskrivelse |
---|---|---|
Oid | streng (GUID) | Brukerens objekt-ID, som er en uforanderlig identifikator for anmoderen. Dette er den bekreftede identiteten til brukeren eller tjenestekontohaveren som brukes til å aktivere denne funksjonen på tvers av programmer. |
TenantId | streng (GUID) | ID-en til leieren som brukeren er logget på. |
PreferredUsername | streng | Foretrukket brukernavn for den påkallende brukeren, som angitt av brukeren. Denne verdien kan dempes. |
Hvis du vil ha tilgang til UserDataFunctionContext
-parameteren, må du bruke følgende dekoratør øverst i funksjonsdefinisjonen: @udf.context(argName="<parameter name>")
Eksempel
@udf.context(argName="myContext")
@udf.function()
def getContext(myContext: fabric.functions.UserDataFunctionContext)-> str:
logging.info('Python UDF trigger function processed a request.')
return f"Hello oid = {context.executing_user['Oid']}, TenantId = {context.executing_user['TenantId']}, PreferredUsername = {context.executing_user['PreferredUsername']}, InvocationId = {context.invocation_id}"
Kast en håndtert feil med UserThrownError
Når du utvikler funksjonen, kan du sende et forventet feilsvar ved hjelp av UserThrownError
metoden som er tilgjengelig i Python-programmeringsmodellen. Én bruk av denne metoden er å administrere tilfeller der inndataene fra brukeren ikke klarer å sende forretningsvalideringsregler.
Eksempel
import datetime
@udf.function()
def raise_userthrownerror(age: int)-> str:
if age < 18:
raise fn.UserThrownError("You must be 18 years or older to use this service.", {"age": age})
return f"Welcome to Fabric Functions at {datetime.datetime.now()}!"
Denne UserThrownError
metoden tar to parametere:
-
Message
: Denne strengen returneres som feilmeldingen til programmet som aktiverer denne funksjonen. - En ordliste med egenskaper som returneres til programmet som aktiverer denne funksjonen.