Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Programmeringsmodellen for Fabric User-datafunktioner er et SDK, der giver den nødvendige funktionalitet til at oprette og publicere runnable funktioner i Fabric. SDK'et giver dig også mulighed for problemfrit at integrere med andre elementer i Fabric-økosystemet, f.eks. Fabric-datakilder. Dette bibliotek er offentligt tilgængeligt i PyPI- og er forudinstalleret i elementer i dine brugerdatafunktioner.
SDK til brugerdatafunktioner
Et element med brugerdatafunktioner indeholder en eller flere funktioner, som du kan aktivere fra Fabric-portalen, fra et andet Fabric-element eller fra et eksternt program ved hjælp af det angivne REST-slutpunkt. Hver funktion er en metode i Python-scriptet, der gør det muligt at overføre parametre og returnere et output til aktiveringsfunktionen. Programmeringsmodellen Brugerdatafunktioner indeholder følgende komponenter:
Biblioteket
fabric.functions
indeholder den kode, du skal bruge for at oprette brugerdatafunktioner i Python. Du kan se, at dette bibliotek importeres i din første funktionsskabelon, når du opretter et nyt element til brugerdatafunktioner.Metoden
fn.UserDataFunctions()
leverer udførelseskonteksten. Den tilføjes i starten af kodefilen i alle nye elementer med brugerdatafunktioner før nogen funktionsdefinitioner.Eksempel:
import datetime import fabric.functions as fn import logging udf = fn.UserDataFunctions()
Hver funktion identificeres med en
@udf.function()
dekoratør. Denne dekoratør definerer, om din funktion kan aktiveres individuelt fra portalen eller en ekstern invoker.eksempel på funktionen Invokable
# 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()}!"
Python-metoder uden
@udf.function()
dekoratøren kan ikke aktiveres direkte. De kan kun aktiveres fra funktioner, der indeholder dekoratøren, og kan bruges som hjælpefunktioner.eksempel på hjælpefunktion
# 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()
Understøttede inputtyper
Du kan definere inputparametre for funktionen, f.eks. primitive datatyper som str, int, float osv. De understøttede inputdatatyper er:
JSON-type | Python-datatype |
---|---|
Streng | Str |
datetime-streng | dato/klokkeslæt |
Boolesk | Bool |
tal | int, float |
Array | list[], eksempelliste[int] |
objekt | Dict |
Understøttede outputtyper
De understøttede outputdatatyper er:
Python-datatype |
---|
Str |
dato/klokkeslæt |
Bool |
int, float |
list[data-type], f.eks. list[int] |
Dict |
Ingen |
Dataforbindelser til Fabric-datakilder
I dette modul kan du referere til dataforbindelser uden at skulle skrive forbindelsesstrenge i din kode. Biblioteket fabric.functions
indeholder to måder at håndtere dataforbindelser på:
- fabric.functions.FabricSqlConnection: Giver dig mulighed for at arbejde med SQL-databaser i Fabric, herunder SQL Analytics-slutpunkter og Fabric warehouses.
- fabric.functions.FabricLakehouseClient: Giver dig mulighed for at arbejde med Lakehouses, så du kan oprette forbindelse til både Lakehouse-tabeller og Lakehouse-filer.
Hvis du vil referere til en forbindelse til en datakilde, skal du bruge @udf.connection
dekoratør. Du kan anvende den i et af 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>")
Argumenterne for @udf.connection
er:
-
argName
, bruges navnet på den variabel, som forbindelsen bruger i din funktion. -
alias
, aliasset for den forbindelse, du har tilføjet med menuen Administrer forbindelser. - Hvis
argName
ogalias
har samme værdi, kan du bruge@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 aktiveringsegenskaber ved hjælp af UserDataFunctionContext
Programmeringsmodellen indeholder også objektet UserDataFunctionContext
. Dette objekt indeholder metadata for funktionsaktivering og kan bruges til at oprette specifik applogik for visse aktiveringsmekanismer.
I følgende tabel vises egenskaberne for det UserDataFunctionContext
objekt:
Egenskabsnavn | Datatype | Beskrivelse |
---|---|---|
Aktiverings-id | streng | Det entydige GUID, der er knyttet til aktiveringen af elementet med brugerdatafunktioner. |
Udfører bruger | objekt | Metadata for brugerens oplysninger, der bruges til at godkende aktiveringen. |
Objektet ExecutingUser
indeholder følgende oplysninger:
Egenskabsnavn | Datatype | Beskrivelse |
---|---|---|
Oid | streng (GUID) | Brugerens objekt-id, som er et uforanderligt id for anmoderen. Dette er den bekræftede identitet for den bruger eller tjenesteprincipal, der bruges til at aktivere denne funktion på tværs af programmer. |
TenantId | streng (GUID) | Id'et for den lejer, som brugeren er logget på. |
PreferredUsername | streng | Det foretrukne brugernavn for den bruger, der aktiverer, som angivet af brugeren. Denne værdi kan slås fra. |
Hvis du vil have adgang til parameteren UserDataFunctionContext
, skal du bruge følgende dekoratør øverst i funktionsdefinitionen: @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åndteret fejl med UserThrownError
Når du udvikler din funktion, kan du udløse et forventet fejlsvar ved hjælp af den UserThrownError
metode, der er tilgængelig i Python-programmeringsmodellen. En måde at bruge denne metode på er at administrere tilfælde, hvor brugerindgivne input ikke kan bestå 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
metode tager to parametre:
-
Message
: Denne streng returneres som fejlmeddelelsen til det program, der aktiverer denne funktion. - En ordbog med egenskaber, der returneres til det program, der aktiverer denne funktion.
Næste trin
- Reference-API-dokumentation
- opret et element til fabric-brugerdatafunktioner
- eksempler på brugerdatafunktioner