Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De notebookutils.udf module biedt hulpprogramma's voor het integreren van notebookcode met UDF-items (User Data Function). U kunt functies openen vanuit een UDF-item binnen dezelfde werkruimte of in verschillende werkruimten en deze functies vervolgens indien nodig aanroepen. UDF-items bevorderen hergebruik van code, gecentraliseerd onderhoud en teamsamenwerking.
UDF-hulpprogramma's gebruiken om:
- Functie ophalen : toegang tot functies van UDF-items op naam.
- Toegang tussen werkruimten : gebruik functies van UDF-items in andere werkruimten.
- Functiedetectie : controleer beschikbare functies en hun handtekeningen.
- Flexibele aanroep : oproepfuncties met taal geschikte parameters.
Opmerking
U hebt leestoegang nodig tot een UDF-item in de doelwerkruimte om de functies op te halen. Uitzonderingen van UDF-functies worden doorgegeven aan het aanroepende notebook.
De volgende tabel bevat de beschikbare UDF-methoden:
| Methode | Signature | Beschrijving |
|---|---|---|
getFunctions |
getFunctions(udf: String, workspaceId: String = ""): UDF |
Hiermee worden alle functies opgehaald uit een UDF-item op artifact-ID of naam. Retourneert een object met aanroepbare functiekenmerken. |
Het geretourneerde object bevat de volgende eigenschappen:
| Vastgoed | Typ | Beschrijving |
|---|---|---|
functionDetails |
List | Een lijst met woordenlijsten voor functiemetagegevens. Elke woordenlijst bevat: Name (functienaam), Description (functiebeschrijving), Parameters (lijst met parameterdefinities), FunctionReturnType (retourtype) en DataSourceConnections (gebruikte gegevensbronverbindingen). |
itemDetails |
Woordenlijst | Een woordenlijst met metagegevens van UDF-items met sleutels: Id (artefact-id), Name (itemnaam), WorkspaceId (werkruimte-id) en CapacityId (capaciteits-id). |
<functionName> |
Callable | Elke functie in het UDF-item wordt een aanroepbare methode voor het geretourneerde object. Gebruik myFunctions.functionName(...) om aan te roepen. |
Aanbeveling
Haal UDF-functies eenmaal op en sla het wrapper-object in de cache op. Vermijd herhaaldelijk aanroepen getFunctions() in een lus: sla het resultaat in de cache op om overhead te minimaliseren.
Functies ophalen uit een UDF
Hiermee notebookutils.udf.getFunctions() haalt u alle functies op uit een UDF-item. U kunt desgewenst een werkruimte-id opgeven voor toegang tussen werkruimten.
# Get functions from a UDF item in the current workspace
myFunctions = notebookutils.udf.getFunctions('UDFItemName')
# Get functions from a UDF item in another workspace
myFunctions = notebookutils.udf.getFunctions('UDFItemName', 'workspaceId')
Een functie aanroepen
Nadat u functies hebt opgehaald uit een UDF-item, roept u deze op naam aan. Python ondersteunt positionele en benoemde parameters. Voorbeelden van Scala en R gebruiken positionele parameters.
# Positional parameters
myFunctions.functionName('value1', 'value2')
# Named parameters (recommended for clarity)
myFunctions.functionName(parameter1='value1', parameter2='value2')
Standaardparameterwaarden
Fabric functies voor gebruikersgegevens ondersteunen standaardargumentwaarden. Wanneer u functies aanroept die worden opgehaald via notebookutils.udf.getFunctions, kan elke parameter met een gedefinieerde standaardwaarde worden weggelaten. De runtime gebruikt automatisch de standaardwaarde. U kunt ook benoemde argumenten opgeven om specifieke standaardwaarden te overschrijven terwijl anderen op hun standaardwaarden blijven staan.
# Assume the UDF item defines a function like:
# def score_customer(customerId: str, startDate: datetime = "2025-01-01T00:00:00Z", isActive: bool = True, maxRecords: int = 100) -> dict
# The datetime defaults are specified as strings in the signature; the runtime parses them to datetime at invocation time.
# 1. Call without optional parameters — defaults are used for startDate, isActive, and maxRecords
result = myFunctions.scoreCustomer(customerId='C001')
# 2. Override one default via a named argument, keep the others at their defaults
result = myFunctions.scoreCustomer(customerId='C001', maxRecords=50)
# 3. Pass a date/time in ISO 8601 format for reliable parsing
result = myFunctions.scoreCustomer(customerId='C001', startDate='2025-12-31T23:59:59Z')
Ondersteunde standaardinvoertypen
De volgende typen worden ondersteund als standaardparameterwaarden:
| Standaardtype | Notes |
|---|---|
| Snaar / Touwtje | Een JSON-serialiseerbare tekenreeks. |
| Datum/tijd-tekenreeks | Geef het op als een tekenreeks in de functie-signature. De runtime parseert deze tijdens datetime aanroeptijd. Gebruik een consistente indeling zoals ISO 8601 (bijvoorbeeld 2025-12-31T23:59:59Z). |
| Boolean |
True of False. |
| Integer | Een geheel getal. |
| zweven | Elke drijvende-kommawaarde. |
| List | Moet JSON-serialiseerbaar zijn; geef de voorkeur aan None in de functiehandtekening en wijs het binnen de functie toe om problemen met veranderbare standaarden te voorkomen. |
| Woordenlijst | Moet JSON-serialiseerbaar zijn; geef de voorkeur None aan in de handtekening en wijs deze toe in de functie. |
| Pandas DataFrame | Geleverd als een JSON-object dat de SDK converteert naar een pandas-type. Vereist fabric-user-data-functions versie 1.0.0 of hoger. |
| pandas-serie | Geleverd als een JSON-matrix met objecten die de SDK converteert naar een pandas-type. Vereist fabric-user-data-functions versie 1.0.0 of hoger. |
Beperkingen en richtlijnen
Standaardwaarden moeten JSON-serializeerbaar zijn (sets en tuples worden niet ondersteund). Voor standaardinstellingen van lijsten of woordenboeken, gebruik None in de signatuur en wijs de daadwerkelijke standaardwaarde binnen de functie toe om gedeelde veranderlijke standaardwaarden te vermijden. Gebruik de ISO 8601-indeling (bijvoorbeeld 2025-12-31T23:59:59Z) voor de standaardinstellingen voor datum/tijd. Voor het gebruik van pandas DataFrame of Series als standaard is versie 1.0.0 of hoger vereist fabric-user-data-functions .
Details weergeven
U kunt UDF-itemmetagegevens en functiehandtekeningen programmatisch inspecteren.
UDF-itemdetails weergeven
Details van de functie weergeven
Aanbeveling
Controleer functionDetails altijd wanneer u met een nieuw UDF-item werkt. Dit helpt u bij het controleren van beschikbare functies en de verwachte parametertypen voordat u aanroept.
Foutafhandeling
UDF-aanroepen verpakken in taalgerichte foutafhandeling om ontbrekende functies of onverwachte parametertypen correct te beheren. Controleer altijd of er een functie bestaat in het UDF-item voordat u deze aanroept.
import json
try:
validators = notebookutils.udf.getFunctions('DataValidators')
# Check if function exists before calling
functions_info = json.loads(validators.functionDetails)
function_names = [f['Name'] for f in functions_info]
if 'validateSchema' in function_names:
is_valid = validators.validateSchema(
schema='sales_schema',
data_path='Files/data/sales.csv'
)
print(f"Schema validation: {'passed' if is_valid else 'failed'}")
else:
print("validateSchema function not available in this UDF item")
print(f"Available functions: {', '.join(function_names)}")
except AttributeError as e:
print(f"Function not found: {e}")
except TypeError as e:
print(f"Parameter type mismatch: {e}")
except Exception as e:
print(f"Error invoking UDF: {e}")
UDF-functies gebruiken in een gegevenspijplijn
U KUNT UDF-functies opstellen om herbruikbare ETL-stappen te bouwen:
etl_functions = notebookutils.udf.getFunctions('ETLUtilities')
df = spark.read.csv('Files/raw/sales.csv', header=True)
cleaned_df = etl_functions.removeOutliers(df, columns=['amount'])
enriched_df = etl_functions.addCalculatedColumns(cleaned_df)
validated_df = etl_functions.validateAndFilter(enriched_df)
validated_df.write.mode('overwrite').parquet('Files/processed/sales.parquet')
print("ETL pipeline completed using UDF functions")
Belangrijk
UDF-aanroepen hebben overhead. Als u dezelfde functie herhaaldelijk met dezelfde parameters aanroept, kunt u het resultaat in de cache opslaan. Vermijd het aanroepen van UDF-functies in strakke lussen, indien mogelijk.