NotebookUtils Felhasználói Adatfunkció (UDF) segédprogramok a Fabrichez

A notebookutils.udf modul segédprogramokat biztosít a jegyzetfüzet kódjának felhasználói adatfüggvényekkel (UDF) való integrálásához. A függvényeket egy UDF-elemből érheti el ugyanazon a munkaterületen vagy különböző munkaterületeken, majd szükség szerint meghívhatja ezeket a függvényeket. Az UDF-elemek elősegítik a kód újrafelhasználhatóságát, a központosított karbantartást és a csapatmunkát.

UDF-segédprogramok használata:

  • Függvénylekérés – Függvények elérése az UDF-elemekből név szerint.
  • Munkaterületek közötti hozzáférés – Más munkaterületek UDF-elemeiből származó függvények használata.
  • Függvényfelderítés – Vizsgálja meg az elérhető függvényeket és azok aláírását.
  • Rugalmas hívás – A függvények hívása nyelvnek megfelelő paraméterekkel.

Megjegyzés:

A függvények eléréséhez egy UDF-elemhez való olvasási hozzáférésre van szüksége a cél-munkaterületen. Az UDF-függvények kivételei továbbítódnak a hívó jegyzetfüzethez.

Az alábbi táblázat az elérhető UDF-metódusokat sorolja fel:

Módszer Signature Leírás
getFunctions getFunctions(udf: String, workspaceId: String = ""): UDF Az összes függvényt lekéri egy UDF-elemből az összetevő azonosítója vagy neve alapján. Meghívható függvényattribútumokkal rendelkező objektumot ad vissza.

A visszaadott objektum a következő tulajdonságokat teszi elérhetővé:

Ingatlan Típus Leírás
functionDetails Lista A függvény metaadat-szótárainak listája. Minden szótár tartalmazza a következőket: Name (függvény neve), Description (függvény leírása), Parameters (paraméterdefiníciók listája), FunctionReturnType (visszatérési típus) és DataSourceConnections (használt adatforrás-kapcsolatok).
itemDetails Szótár Az UDF-elemek metaadatainak szótára a következő kulcsokkal: Id (összetevő-azonosító), Name (elemnév), WorkspaceId (munkaterület-azonosító) és CapacityId (kapacitásazonosító).
<functionName> Callable Az UDF-elem minden függvénye meghívható metódussá válik a visszaadott objektumon. A meghíváshoz használható myFunctions.functionName(...) .

Jótanács

Egyszer olvassa be az UDF-függvényeket, és tárolja gyorsítótárban a burkolóobjektumot. Kerülje a getFunctions() ismételt hívását egy cikluson belül – helyette gyorsítótárazza az eredményt, hogy csökkentse a többletterhelést.

Függvények lekérése egy UDF-ből

Használd a notebookutils.udf.getFunctions()-t az összes függvény lekéréséhez egy UDF-elemből. Megadhat munkaterület-azonosítót a munkaterületek közötti hozzáféréshez.

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

Függvény meghívása

Miután lekérte a függvényeket egy UDF-elemből, hívja meg őket név szerint. A Python támogatja a pozíció- és elnevezett paramétereket. A Scala- és R-példák pozícióparamétereket használnak.

# Positional parameters
myFunctions.functionName('value1', 'value2')

# Named parameters (recommended for clarity)
myFunctions.functionName(parameter1='value1', parameter2='value2')

Alapértelmezett paraméterértékek

Fabric felhasználói adatfüggvények támogatják az alapértelmezett argumentumértékeket. Amikor függvényeket notebookutils.udf.getFunctions hív meg, a megadott alapértelmezett paraméter elhagyható; a futtatókörnyezet automatikusan az alapértelmezettet használja. Elnevezett argumentumokat is megadhat az adott alapértelmezett értékek felülbírálásához, miközben mások az alapértelmezett értékükön maradnak.

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

Támogatott alapértelmezett bemeneti típusok

A következő típusok támogatottak alapértelmezett paraméterértékként:

Alapértelmezett típus Notes
Lánc Bármilyen JSON-szerializálható sztring.
Dátumidő karakterlánc Adja meg sztringként a függvény-aláírásban. A futtatókörnyezet a meghívási időpontban datetime elemzi azt. Használjon konzisztens formátumot, például az ISO 8601-et (például 2025-12-31T23:59:59Z).
logikai True vagy False.
Egész szám Bármilyen egész szám.
Lebegőpontos Bármely lebegőpontos érték.
Lista Legyen JSON-szerializálható; részesítse előnyben a None szignatúrában való használatát, és rendeljen hozzá a függvényen belül, hogy elkerülje a változtatható alapértelmezett értékek buktatóit.
Szótár JSON-szerializálhatónak kell lennie; a függvény szignatúrájában használja előnyben a None-t, és hozzárendelését a függvényen belül végezze el.
pandas DataFrame JSON-objektumként van megadva, amelyet az SDK pandas-típussá alakít át. Az 1.0.0-s vagy újabb verziót igényli fabric-user-data-functions .
pandas sorozat (Series) JSON-objektumtömbként van megadva, amelyet az SDK pandas-típussá alakít át. Az 1.0.0-s vagy újabb verziót igényli fabric-user-data-functions .

Korlátozások és útmutatás

Az alapértelmezett értékeknek JSON-szerializálhatónak kell lenniük (a halmazok és a tuplák nem támogatottak). A lista vagy szótár alapértelmezett beállításaihoz a függvény aláírásában használja None, és adja meg a valódi alapértelmezett értéket a függvény belsejében, hogy elkerülje a megosztott módosítható alapértelmezéseket. A datetime alapértelmezett beállításához használja az ISO 8601 formátumot (például 2025-12-31T23:59:59Z) . A Pandas DataFrame vagy series alapértelmezett használata 1.0.0-s vagy újabb verziót igényel fabric-user-data-functions .

Részletek megjelenítése

Az UDF-elemek metaadatait és a függvény-aláírásokat programozott módon is megvizsgálhatja.

UDF-elem részleteinek megjelenítése

display(myFunctions.itemDetails)

Függvény részleteinek megjelenítése

display(myFunctions.functionDetails)

Jótanács

Mindig vizsgálja meg functionDetails , ha új UDF-elemet használ. Ez segít ellenőrizni az elérhető függvényeket és azok várható paramétertípusait a meghívás előtt.

Hibakezelés

Az UDF-meghívások burkolása a nyelvhez igazodó hibakezeléssel lehetővé teszi a hiányzó függvények vagy a váratlan paramétertípusok elegáns kezelését. A meghívás előtt mindig ellenőrizze, hogy létezik-e függvény az UDF-elemben.

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-függvények használata adatfolyamban

Az újrahasználható ETL-lépések létrehozásához UDF-függvényeket írhat:

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

Fontos

Az UDF-meghívások többletterheléssel járnak. Ha ugyanazt a függvényt ismételten ugyanazokkal a paraméterekkel hívja meg, fontolja meg az eredmény gyorsítótárazását. Ha lehetséges, kerülje az UDF-függvények meghívását szoros hurkokban.