Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Modul notebookutils.udf poskytuje nástroje pro integraci kódu poznámkového bloku s položkami funkce uživatelská data (UDF). K funkcím můžete přistupovat z položky UDF ve stejném pracovním prostoru nebo v různých pracovních prostorech a podle potřeby tyto funkce vyvolat. UDF položky podporují opakovaně použitelné kódy, centralizovanou údržbu a týmové spolupráci.
Použijte UDF nástroje k:
- Načtení funkce – Přístup k funkcím z položek UDF podle názvu
- Přístup mezi pracovními prostory – Používejte funkce z položek UDF v jiných pracovních prostorech.
- Zjišťování funkcí – Kontrola dostupných funkcí a jejich podpisů
- Flexibilní vyvolání – Volání funkcí s odpovídajícími parametry jazyka
Poznámka:
K načtení jeho funkcí potřebujete přístup pro čtení k položce definované uživatelem v cílovém pracovním prostoru. Výjimky z funkcí definované uživatelem se šíří do volajícího poznámkového bloku.
V následující tabulce jsou dostupné metody UDF:
| Metoda | Signature | Description |
|---|---|---|
getFunctions |
getFunctions(udf: String, workspaceId: String = ""): UDF |
Načte všechny funkce z položky UDF podle ID nebo názvu artefaktu. Vrátí objekt s atributy volatelné funkce. |
Vrácený objekt zveřejňuje následující vlastnosti:
| Vlastnictví | Typ | Description |
|---|---|---|
functionDetails |
List | Seznam slovníků metadat funkcí Každý slovník zahrnuje: Name (název funkce), Description (popis funkce), Parameters (seznam definic parametrů), FunctionReturnType (návratový typ) a DataSourceConnections (použitá připojení ke zdroji dat). |
itemDetails |
Slovník | Slovník metadat položek UDF s klíči: Id (ID artefaktu), Name (název položky), WorkspaceId (ID pracovního prostoru) a CapacityId (ID kapacity). |
<functionName> |
Callable | Každá funkce v položce UDF se stane volatelnou metodou pro vrácený objekt. Použijte myFunctions.functionName(...) k vyvolání. |
Návod
Načtení funkcí UDF jednou a uložení objektu obálky do mezipaměti. Vyhněte se opakovanému volání getFunctions() ve smyčce – místo toho do mezipaměti zapamujte výsledek, abyste minimalizovali režijní náklady.
Načtení funkcí z UDF
Slouží notebookutils.udf.getFunctions() k získání všech funkcí z položky UDF. Volitelně můžete zadat ID pracovního prostoru pro přístup mezi pracovními prostory.
# 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')
Vyvolat funkci
Po načtení funkcí z položky UDF je zavolejte podle názvu. Python podporuje poziční a pojmenované parametry. Příklady Scala a R používají poziční parametry.
# Positional parameters
myFunctions.functionName('value1', 'value2')
# Named parameters (recommended for clarity)
myFunctions.functionName(parameter1='value1', parameter2='value2')
Výchozí hodnoty parametrů
Fabric funkce uživatelských dat podporují výchozí hodnoty argumentů. Když vyvoláte funkce načtené prostřednictvím notebookutils.udf.getFunctions, všechny parametry, které mají definované výchozí nastavení, je možné vynechat – modul runtime použije výchozí hodnotu automaticky. Můžete také zadat pojmenované argumenty pro přepsání konkrétních výchozích hodnot a zároveň ponechat ostatní výchozí hodnoty.
# 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')
Podporované výchozí typy vstupu
Jako výchozí hodnoty parametrů se podporují následující typy:
| Výchozí typ | Notes |
|---|---|
| String | Libovolný řetězec json serializovatelný. |
| Řetězec datetime | Zadejte jako řetězec v podpisu funkce. Modul runtime ho analyzuje při datetime vyvolání. Použijte konzistentní formát, například ISO 8601 (například 2025-12-31T23:59:59Z). |
| logický |
True nebo False. |
| Integer | Libovolná celočíselná hodnota. |
| Float | Libovolná hodnota s plovoucí desetinou čárkou. |
| List | Musí být serializovatelný ve formátu JSON; preferujte None v podpisu a přiřaďte uvnitř funkce, aby se předešlo problémům s proměnlivými výchozími hodnotami. |
| Slovník | Musí být serializovatelný JSON; upřednostněte None v podpisu a přiřaďte ho uvnitř funkce. |
| pandas DataFrame | Poskytuje se jako objekt JSON, který sada SDK převede na typ pandas. Vyžaduje fabric-user-data-functions verzi 1.0.0 nebo novější. |
| Pandas Series | Poskytuje se jako pole JSON objektů, které sada SDK převede na typ pandas. Vyžaduje fabric-user-data-functions verzi 1.0.0 nebo novější. |
Omezení a pokyny
Výchozí hodnoty musí být serializovatelné ve formátu JSON (množiny a n-tice se nepodporují). Pro výchozí hodnoty seznamu nebo slovníku použijte None v podpisu a přiřaďte skutečné výchozí nastavení uvnitř funkce, abyste se vyhnuli sdíleným proměnlivým výchozím nastavením. Pro výchozí hodnoty data a času použijte formát ISO 8601 (například 2025-12-31T23:59:59Z). Použití datového rámce pandas nebo řady jako výchozí verze vyžaduje fabric-user-data-functions verzi 1.0.0 nebo novější.
Zobrazit podrobnosti
Metadata položek UDF a podpisy funkcí UDF můžete kontrolovat programově.
Zobrazit detaily položky UDF
Zobrazení podrobností funkce
Návod
Při práci s novou položkou UDF vždy zkontrolujte functionDetails. To vám pomůže před vyvoláním ověřit dostupné funkce a jejich očekávané typy parametrů.
Zpracování chyb
Obalte uživatelsky definované funkce ve zpracování chyb vhodném pro daný jazyk pro správu chybějících funkcí nebo neočekávaných typů parametrů elegantně. Před voláním funkce vždy ověřte, že existuje v položce uživatelsky definované funkce (UDF).
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}")
Použití funkcí UDF v datovém kanálu
Můžete vytvářet funkce UDF pro sestavení opakovaně použitelných kroků ETL:
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")
Důležité
Volání uživatelských funkcí mají režijní náklady. Pokud voláte stejnou funkci se stejnými parametry opakovaně, zvažte uložení výsledku do mezipaměti. Pokud je to možné, vyhněte se volání funkcí UDF v těsných smyčkách.