Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De notebookutils.udf module biedt hulpprogramma's voor het integreren van notebookcode met UDF-items (User Data Function). U kunt functies openen vanuit een UDF-item binnen dezelfde werkruimte of in verschillende werkruimten en deze functies vervolgens indien nodig aanroepen. UDF-items bevorderen hergebruik van code, gecentraliseerd onderhoud en teamsamenwerking.
UDF-hulpprogramma's gebruiken om:
- Functie ophalen : toegang tot functies van UDF-items op naam.
- Toegang tussen werkruimten : gebruik functies van UDF-items in andere werkruimten.
- Functiedetectie : controleer beschikbare functies en hun handtekeningen.
- Flexibele aanroep : oproepfuncties met taal geschikte parameters.
Opmerking
U hebt leestoegang nodig tot een UDF-item in de doelwerkruimte om de functies op te halen. Uitzonderingen van UDF-functies worden doorgegeven aan het aanroepende notebook.
De volgende tabel bevat de beschikbare UDF-methoden:
| Methode | Signature | Beschrijving |
|---|---|---|
getFunctions |
getFunctions(udf: String, workspaceId: String = ""): UDF |
Hiermee worden alle functies opgehaald uit een UDF-item op artifact-ID of naam. Retourneert een object met aanroepbare functiekenmerken. |
Het geretourneerde object bevat de volgende eigenschappen:
| Vastgoed | Typ | Beschrijving |
|---|---|---|
functionDetails |
List | Een lijst met woordenlijsten voor functiemetagegevens. Elke woordenlijst bevat: Name (functienaam), Description (functiebeschrijving), Parameters (lijst met parameterdefinities), FunctionReturnType (retourtype) en DataSourceConnections (gebruikte gegevensbronverbindingen). |
itemDetails |
Woordenlijst | Een woordenlijst met metagegevens van UDF-items met sleutels: Id (artefact-id), Name (itemnaam), WorkspaceId (werkruimte-id) en CapacityId (capaciteits-id). |
<functionName> |
Callable | Elke functie in het UDF-item wordt een aanroepbare methode voor het geretourneerde object. Gebruik myFunctions.functionName(...) om aan te roepen. |
Aanbeveling
Haal UDF-functies eenmaal op en sla het wrapper-object in de cache op. Vermijd herhaaldelijk aanroepen getFunctions() in een lus: sla het resultaat in de cache op om overhead te minimaliseren.
Functies ophalen uit een UDF
Hiermee notebookutils.udf.getFunctions() haalt u alle functies op uit een UDF-item. U kunt desgewenst een werkruimte-id opgeven voor toegang tussen werkruimten.
# 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')
Een functie aanroepen
Nadat u functies hebt opgehaald uit een UDF-item, roept u deze op naam aan. Python ondersteunt positionele en benoemde parameters. Voorbeelden van Scala en R gebruiken positionele parameters.
# Positional parameters
myFunctions.functionName('value1', 'value2')
# Named parameters (recommended for clarity)
myFunctions.functionName(parameter1='value1', parameter2='value2')
Details weergeven
U kunt UDF-itemmetagegevens en functiehandtekeningen programmatisch inspecteren.
UDF-itemdetails weergeven
Details van de functie weergeven
Aanbeveling
Controleer functionDetails altijd wanneer u met een nieuw UDF-item werkt. Dit helpt u bij het controleren van beschikbare functies en de verwachte parametertypen voordat u aanroept.
Foutafhandeling
UDF-aanroepen verpakken in taalgerichte foutafhandeling om ontbrekende functies of onverwachte parametertypen correct te beheren. Controleer altijd of er een functie bestaat in het UDF-item voordat u deze aanroept.
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-functies gebruiken in een gegevenspijplijn
U KUNT UDF-functies opstellen om herbruikbare ETL-stappen te bouwen:
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")
Belangrijk
UDF-aanroepen hebben overhead. Als u dezelfde functie herhaaldelijk met dezelfde parameters aanroept, kunt u het resultaat in de cache opslaan. Vermijd het aanroepen van UDF-functies in strakke lussen, indien mogelijk.