Freigeben über


NotebookUtils User Data Function (UDF)-Hilfsprogramme für Fabric

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')

Details anzeigen

Sie können UDF-Elementmetadaten und Funktionssignaturen programmgesteuert prüfen.

Anzeigen von UDF-Element-Details

display(myFunctions.itemDetails)

Anzeigen von Funktionsdetails

display(myFunctions.functionDetails)

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.