Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das notebookutils.udf Modul bietet Hilfsprogramme zum Integrieren von Notizbuchcode in UDF-Elemente (User Data Function). Sie können auf Funktionen aus einem UDF-Element innerhalb desselben Arbeitsbereichs oder in verschiedenen Arbeitsbereichen zugreifen und diese Funktionen dann nach Bedarf aufrufen. UDF-Elemente fördern die Wiederverwendbarkeit von Code, die zentrale Wartung und die Teamzusammenarbeit.
Verwenden Sie UDF-Hilfsprogramme, um:
- Funktionsabruf – Zugriff auf Funktionen aus UDF-Elementen anhand des Namens.
- Arbeitsbereichübergreifender Zugriff – Verwenden von Funktionen aus UDF-Elementen in anderen Arbeitsbereichen.
- Funktionsermittlung – Überprüfen der verfügbaren Funktionen und deren Signaturen.
- Flexibles Aufrufen – Aufrufen von Funktionen mit sprachgerechten Parametern.
Hinweis
Sie benötigen Lesezugriff auf ein UDF-Element im Zielarbeitsbereich, um seine Funktionen abzurufen. Ausnahmen von UDF-Funktionen werden an das aufrufende Notizbuch weitergegeben.
In der folgenden Tabelle sind die verfügbaren UDF-Methoden aufgeführt:
| Methode | Signature | Beschreibung |
|---|---|---|
getFunctions |
getFunctions(udf: String, workspaceId: String = ""): UDF |
Ruft alle Funktionen aus einem UDF-Element anhand der Artefakt-ID oder des Namens ab. Gibt ein Objekt mit aufrufbaren Funktionsattributen zurück. |
Das zurückgegebene Objekt macht die folgenden Eigenschaften verfügbar:
| Eigentum | Typ | Beschreibung |
|---|---|---|
functionDetails |
List | Eine Liste der Funktionsmetadatenverzeichnisse. Jedes Wörterbuch enthält: Name (Funktionsname), Description (Funktionsbeschreibung), Parameters (Liste der Parameterdefinitionen), FunctionReturnType (Rückgabetyp) und DataSourceConnections (verwendete Datenquellenverbindungen). |
itemDetails |
Wörterbuch | Ein Wörterbuch mit UDF-Elementmetadaten mit Schlüsseln: Id (Artefakt-ID), Name (Elementname), WorkspaceId (Arbeitsbereichs-ID) und CapacityId (Kapazitäts-ID). |
<functionName> |
Aufrufbar | Jede Funktion im UDF-Element wird zu einer aufrufbaren Methode für das zurückgegebene Objekt. Verwenden Sie myFunctions.functionName(...), um es aufzurufen. |
Tipp
Rufen Sie UDF-Funktionen einmal ab und zwischenspeichern Sie das Wrapperobjekt. Vermeiden Sie wiederholtes Aufrufen getFunctions() in einer Schleife – speichern Sie das Ergebnis stattdessen zwischen, um den Aufwand zu minimieren.
Abrufen von Funktionen aus einer benutzerdefinierten Funktion (UDF)
Verwenden Sie notebookutils.udf.getFunctions(), um alle Funktionen von einem UDF-Element abzurufen. Optional können Sie eine Arbeitsbereichs-ID für den arbeitsbereichübergreifenden Zugriff angeben.
# 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')
Eine Funktion aufrufen
Rufen Sie nach dem Abrufen von Funktionen aus einem UDF-Element diese mit ihrem Namen auf. Python unterstützt Positions- und benannte Parameter. Skala- und R-Beispiele verwenden Positionsparameter.
# Positional parameters
myFunctions.functionName('value1', 'value2')
# Named parameters (recommended for clarity)
myFunctions.functionName(parameter1='value1', parameter2='value2')
Standardwerte für Parameter
Fabric Benutzerdatenfunktionen unterstützen Standardargumentwerte. Wenn Sie funktionen aufrufen, die über notebookutils.udf.getFunctionsabgerufen werden, kann jeder Parameter, der einen definierten Standardwert aufweist, weggelassen werden – die Laufzeit verwendet automatisch den Standardwert. Sie können auch benannte Argumente angeben, um bestimmte Standardwerte außer Kraft zu setzen, während andere an ihren Standardwerten verbleiben.
# 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')
Unterstützte Standardeingabetypen
Die folgenden Typen werden als Standardwerte unterstützt:
| Standardtyp | Notes |
|---|---|
| String | Eine beliebige JSON-serialisierbare Zeichenfolge. |
| Datum-Zeit-String | Geben Sie als Zeichenfolge in der Funktionssignatur an. Die Laufzeit parst sie zu datetime zur Aufrufzeit. Verwenden Sie ein einheitliches Format wie ISO 8601 (z. B 2025-12-31T23:59:59Z. ). |
| Boolean |
True oder False. |
| Integer | Ein ganzzahliger Wert. |
| Float | Ein beliebiger Gleitkommawert. |
| List | Muss JSON-serialisierbar sein; verwenden Sie vorzugsweise None in der Signatur und weisen Sie innerhalb der Funktion zu, um Probleme mit veränderbaren Standardwerten zu vermeiden. |
| Wörterbuch | Muss JSON-serialisierbar sein; in der Signatur sollte None bevorzugt werden, und es sollte innerhalb der Funktion zugewiesen werden. |
| Pandas DataFrame | Bereitgestellt als JSON-Objekt, das das SDK in einen pandas-Typ konvertiert. Erfordert fabric-user-data-functions Version 1.0.0 oder höher. |
| Pandas Serie | Bereitgestellt als JSON-Array von Objekten, die das SDK in einen Pandas-Typ konvertiert. Erfordert fabric-user-data-functions Version 1.0.0 oder höher. |
Einschränkungen und Anleitungen
Standardwerte müssen JSON-serialisierbar sein (Sätze und Tupel werden nicht unterstützt). Verwenden Sie None für Listen- oder Wörterbuchstandardwerte in der Signatur und weisen Sie innerhalb der Funktion den tatsächlichen Standardwert zu, um freigegebene änderbare Standardwerte zu vermeiden. Verwenden Sie das ISO 8601-Format (z. B. 2025-12-31T23:59:59Z) für Standardwerte von Datum und Uhrzeit. Die Verwendung von Pandas DataFrame oder Series als Standard erfordert fabric-user-data-functions Version 1.0.0 oder höher.
Details anzeigen
Sie können UDF-Elementmetadaten und Funktionssignaturen programmgesteuert prüfen.
Anzeigen von UDF-Element-Details
Anzeigen von Funktionsdetails
Tipp
Überprüfen Sie immer functionDetails, wenn Sie mit einem neuen UDF-Element arbeiten. Auf diese Weise können Sie verfügbare Funktionen und deren erwartete Parametertypen vor dem Aufruf überprüfen.
Fehlerbehandlung
Umschließen Sie UDF-Aufrufe in der sprachgerechten Fehlerbehandlung, um fehlende Funktionen oder unerwartete Parametertypen ordnungsgemäß zu verwalten. Stellen Sie immer sicher, dass eine Funktion im UDF-Element vorhanden ist, bevor Sie sie aufrufen.
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}")
Verwenden von UDF-Funktionen in einer Datenpipeline
Sie können UDF-Funktionen erstellen, um wiederverwendbare ETL-Schritte zu erstellen:
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")
Von Bedeutung
UDF-Aufrufe haben Mehraufwand. Wenn Sie dieselbe Funktion mit denselben Parametern wiederholt aufrufen, sollten Sie das Ergebnis zwischenspeichern. Vermeiden Sie nach Möglichkeit das Aufrufen von UDF-Funktionen in engen Schleifen.