Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Függvény részleteinek megjelenítése
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.