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.
Door de gebruiker gedefinieerde operators in Lakeflow Designer worden gedefinieerd in YAML. Alle operatortypen (uc-udf, uc-udtfen python-run-function) maken gebruik van het user-defined-operator-v0.1.0 schema, waarmee configuratievelden worden gedefinieerd met behulp van de JSON-schema-indeling.
Zie Door de gebruiker gedefinieerde operators in Lakeflow Designer voor meer informatie over het bouwen van door de gebruiker gedefinieerde operators.
Hoofdeigenschappen
Elk YAML-operatorbestand begint met een set hoofdeigenschappen die de operator identificeren en het gedrag ervan definiëren. In het volgende voorbeeld ziet u de algemene structuur:
schema: user-defined-operator-v0.1.0
type: python-run-function
name: My Operator
id: my_operator
version: '1.0.0'
description: >
What this operator does.
Can be multiple lines.
config:
type: object
properties:
my_field:
type: string
title: My Field
description: Help text
ports:
input:
- name: data
title: Input Data
output:
- name: out
title: Output
run_function:
type: inline
code: |
def run(config, inputs, spark):
return {"out": inputs["data"]}
environment:
environment_version: '4'
dependencies:
- 'pandas>=2.0'
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
schema |
string | Yes | Schema-id. Moet user-defined-operator-v0.1.0zijn. |
type |
string | Yes | Type operator: uc-udf, uc-udtfof python-run-function. |
name |
string | Yes | Weergavenaam voor de operator. Houd het kort zodat deze past bij de gebruikersinterface van Lakeflow Designer. Minimale lengte van 1 teken. |
id |
string | Yes | Unieke id voor het operatortype. Minimale lengte van 1 teken. Overweeg om naamruimten (zoals finance. of ml.) te gebruiken om operators te categoriseren. |
description |
string | Yes | Gedetailleerde beschrijving van wat de operator doet. Weergegeven voor gebruikers in de gebruikersinterface. Gebruik YAML-syntaxis met meerdere regels (>) voor langere beschrijvingen. |
config |
Voorwerp | Yes | JSON-schemaobject dat configuratievelden definieert. Zie Configuratie. |
ports |
Voorwerp | No | Definities van invoer- en uitvoerpoorten. Zie poorten. |
version |
string | Yes | Versietekenreeks (bijvoorbeeld "1.0.0"). Gebruik deze optie om uw eigen operatorreleases bij te houden. |
run_function |
Voorwerp | No | Inline-Python-code voor operators van python-run-function. Zie run_function. |
environment |
Voorwerp | No | Python omgevingsconfiguratie, inclusief afhankelijkheden. Zie environment. |
Ports
Poorten bepalen hoe uw operator verbinding maakt met andere operators in de pijplijn. Het ports object bevat input en output matrices.
ports:
input:
- name: input_data
title: Input Data
mime: application/vnd.databricks.dataframe
allowMultiple: true
required: true
output:
- name: out
title: Output
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
name |
string | Yes | Unieke id voor de poort. Wordt gebruikt in verbindingen en configuratieverwijzingen. |
title |
string | No | Leesbaar label dat wordt weergegeven in de gebruikersinterface. |
mime |
string | No | MIME-type voor de poortgegevens. Bijvoorbeeld: application/vnd.databricks.dataframe. |
allowMultiple |
booleaan | No | Als true, de poort accepteert meerdere binnenkomende verbindingen. De standaardwaarde is false, waarbij de poort één verbinding accepteert en een nieuwe bron bedradt, vervangt de bestaande. |
required |
booleaan | No | Als false, de poort is optioneel. Standaard: true. |
Alleen de gedocumenteerde poorteigenschappen worden geaccepteerd. Onbekende sleutels (zoals het verouderde label veld) worden geweigerd door schemavalidatie.
Poortvoorbeelden
UDF met invoer- en uitvoerpoorten:
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
UDTF met invoer- en uitvoerpoorten:
ports:
input:
- name: input_data
title: Input Data
output:
- name: clustered_data
title: Clustered Results
python-run-function met meerdere invoer en een optionele poort:
ports:
input:
- name: main_data
title: Main Data
- name: reference_data
title: Reference Table
required: false
output:
- name: joined_output
title: Joined Output
Config
Het config veld is een JSON-schemaobject. U definieert elk configuratieveld als een eigenschap in het schema. Met deze indeling hebt u toegang tot standaardfuncties voor JSON-schemavalidatie, zoals enum, minimumen maximumexamples.
Het config object moet een kaart hebbentype: object.properties U kunt eventueel required (een matrix met vereiste eigenschapsnamen) en additionalProperties.
config:
type: object
properties:
cluster_count:
type: number
title: Number of Clusters
description: How many clusters to create
default: 3
minimum: 1
maximum: 100
algorithm:
type: string
title: Algorithm
description: Clustering algorithm to use
enum: ['kmeans', 'dbscan', 'hierarchical']
default: kmeans
feature_col:
type: string
title: Feature Column
description: Column to use as input
format: expression
x-ui:
widget: expression
port: data
required: [cluster_count, feature_col]
additionalProperties: false
Eigenschappenvelden voor configuratie
Elke eigenschap in het config.properties object ondersteunt de volgende standaard JSON-schemavelden:
| Veld | Typ | Description |
|---|---|---|
type |
string | Gegevenstype: string, , numberinteger, boolean, , of arrayobject. |
title |
string | Leesbaar label dat wordt weergegeven in de gebruikersinterface. |
description |
string | Help-tekst die wordt weergegeven aan gebruikers. |
default |
any | Standaardwaarde voor het veld. |
examples |
gegevensreeks | Voorbeeldwaarden voor het veld. |
enum |
gegevensreeks | Vaste lijst met toegestane waarden. |
format |
string | Semantische typehint. Zie Waarden opmaken. |
minimum |
number | Minimaal toegestane waarde (voor number en integer typen). |
maximum |
number | Maximaal toegestane waarde (voor number en integer typen). |
items |
Voorwerp | Schema voor matrixelementen (wanneer type dat is array). |
properties |
Voorwerp | Geneste eigenschapsdefinities (wanneer type dat is object). |
required |
gegevensreeks | Lijst met vereiste geneste eigenschapsnamen (wanneer type dat het is object). |
Andere standaard JSON-schemavelden, zoals minLength, maxLengthen patternconst worden ook ondersteund.
Waarden opmaken
Het format veld op een configuratie-eigenschap biedt een semantische typehint die Lakeflow Designer vertelt hoe de waarde moet worden geïnterpreteerd. Deze hints maken gespecialiseerde gebruikersinterfacegedrag en -validatie mogelijk.
| Format | Description |
|---|---|
expression |
Kolomreferentie of SQL-expressie. |
table_source |
Naslaginformatie over de tabelbron. |
file_source |
Naslaginformatie over de bestandsbron. |
column_expressions |
Kolomexpressies. |
sort_expressions |
Expressies sorteren. |
aggregation_expressions |
Aggregatie-expressies. |
ai_function_expressions |
AI-functie-expressies. |
is_preview |
Vlag voor automatische preview-modus. Lakeflow Designer stelt dit true in tijdens de voorbeeldweergave van de werkstroom. De naam van de configuratie-eigenschap is willekeurig; alleen de format: is_preview tag is belangrijk. Gebruik deze optie om bijwerkingen zoals externe API-aanroepen tijdens de preview over te slaan. |
string[] |
Tekenreeksmatrix. |
UI-widgets
Widgets passen aan hoe een configuratieveld wordt weergegeven in de Lakeflow Designer-interface. Definieer widgets in de x-ui eigenschap voor elke configuratie-eigenschap. Als u de widget weglaat, gebruikt Lakeflow Designer een standaardwidget op basis van het gegevenstype.
| Widget | Gegevenstype | Description |
|---|---|---|
input |
string | Tekstinvoer met één regel. |
textarea |
string | Tekstgebied met meerdere regels. Ondersteunt optionele rows eigenschap. |
checkbox |
booleaan | Standaard selectievakje. |
toggle |
booleaan | Schakeloptie in- en uitschakelen. |
number |
getal/geheel getal | Numerieke invoer met optionele beperkingen. |
slider |
getal/geheel getal | Visuele schuifregelaar voor numerieke bereiken. Ondersteunt optionele step eigenschap. |
select |
string | Vervolgkeuzelijst met één selectie. Vereist optionsSource. |
multi-select |
gegevensreeks | Vervolgkeuzelijst met meerdere selecties. Vereist optionsSource. |
expression |
string | Kolom-/expressieselector. Vereist port. |
input
Invoerveld voor tekst met één regel.
api_endpoint:
type: string
title: API Endpoint
x-ui:
widget: input
textarea
Tekstgebied met meerdere regels voor langere inhoud. Ondersteunt een optionele rows eigenschap om de hoogte te beheren.
message_body:
type: string
title: Message Body
x-ui:
widget: textarea
rows: 4
checkbox
Standaard selectievakje voor Booleaanse waarden.
send_notification:
type: boolean
title: Send Notification
default: false
x-ui:
widget: checkbox
toggle
Schakeloptie voor Booleaanse waarden in- of uitschakelen.
enable_logging:
type: boolean
title: Enable Logging
default: true
x-ui:
widget: toggle
number
Numeriek invoerveld. Gebruik minimum en maximum op de eigenschap zelf om het bereik te beperken.
num_clusters:
type: number
title: Number of Clusters
default: 3
minimum: 1
maximum: 100
x-ui:
widget: number
slider
Visuele schuifregelaar voor het selecteren van numerieke waarden binnen een bereik. Gebruik minimum en maximum op de eigenschap om het bereik in te stellen en step om x-ui de verhoging te beheren.
confidence_threshold:
type: number
title: Confidence Threshold
default: 0.8
minimum: 0
maximum: 1
x-ui:
widget: slider
step: 0.05
select
Vervolgkeuzelijst met één selectie. Hiervoor moet worden optionsSource gedefinieerd waar de vervolgkeuzelijstwaarden vandaan komen. Zie optiesbronnen.
aggregation_type:
type: string
title: Aggregation Type
x-ui:
widget: select
optionsSource:
type: static
values: ['sum', 'avg', 'min', 'max', 'count']
multi-select
Vervolgkeuzelijst met meerdere selecties voor het kiezen van meerdere waarden. Gebruiken type: array met items: { type: string } op de eigenschap. Vereist een optionsSource. Zie optiesbronnen.
feature_columns:
type: array
title: Feature Columns
items:
type: string
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: input_data
expression
Kolom-/expressiekiezer waarmee gebruikers een kolom kunnen kiezen uit invoergegevens of een aangepaste SQL-expressie kunnen schrijven. Stel format: expression de eigenschap in en geef de invoer port op in x-ui. Dit is handig:
- Wanneer de gebruiker een kolom in de invoergegevens moet selecteren.
- Wanneer de gebruiker mogelijk een aangepaste SQL-expressie wil schrijven.
- Voor parameters die verwijzen naar dynamische gegevens in de pijplijn.
amount:
type: string
title: Amount
format: expression
x-ui:
widget: expression
port: input_data
Optiesbronnen
Voor select en multi-select widgets moet u definiëren waar de vervolgkeuzelijsten vandaan komen met behulp van optionsSource. Er zijn twee bronnen: static (een vaste lijst die is gedefinieerd in de YAML) en inputColumns (kolomnamen van een invoerpoort).
Statische opties
Een vaste lijst met waarden die zijn gedefinieerd in de YAML.
optionsSource:
type: static
values: ['option1', 'option2', 'option3']
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
type |
string | Yes | Moet staticzijn. |
values |
gegevensreeks | Yes | Matrix met tekenreekswaarden voor de vervolgkeuzelijst. |
Invoerkolommen
De vervolgkeuzelijst wordt dynamisch gevuld met kolomnamen van een invoerpoort.
optionsSource:
type: inputColumns
port: input_data
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
type |
string | Yes | Moet inputColumnszijn. |
port |
string | Yes | Naam van de invoerpoort waaruit kolomnamen moeten worden opgehaald. Moet overeenkomen met een name van uw gedefinieerde invoerpoorten. |
run_function
Met de eigenschap run_function kunt u Python code rechtstreeks insluiten in de YAML-configuratie voor python-run-function-operators. Hierdoor hoeft u geen afzonderlijke Unity Catalog-functie te registreren.
run_function:
type: inline
code: |
def run(config, inputs, spark):
df = inputs["data"]
threshold = config["threshold"]
return {"out": df.filter(df["score"] > threshold)}
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
type |
string | Yes | Moet inlinezijn. |
code |
string | Yes | Python broncode. Moet een run() functie definiëren. |
De run() functie ontvangt drie argumenten:
-
config: Een woordenlijst met configuratiewaarden die door de gebruiker in de gebruikersinterface zijn ingesteld. -
inputs: Een woordenlijst die invoerpoortnamen toe te wijzen aan DataFrames. -
spark: De actieve SparkSession.
De functie moet de uitvoerpoortnamen van een woordenlijsttoewijzing retourneren aan DataFrames. De sleutels moeten exact overeenkomen met het name veld van elke uitvoerpoort die is gedefinieerd in ports.output. Bijvoorbeeld met een uitvoerpoort met de naam out:
return {"out": result_df}
Met meerdere uitvoerpoorten:
return {"match": match_df, "rest": rest_df}
environment
De eigenschap environment geeft de Python-omgeving op voor python-run-function operators. Gebruik deze om de omgevingsversie vast te maken en pip-afhankelijkheden te declareren.
environment:
environment_version: '4'
dependencies:
- 'scikit-learn>=1.3'
- 'pandas>=2.0'
| Vastgoed | Typ | Verplicht | Description |
|---|---|---|---|
environment_version |
string | No | De serverloze omgevingsversie, waarmee de basis-Python runtime en vooraf geïnstalleerde bibliotheken worden ingesteld. Voor de beschikbare versies, zie Omgevingsversies. Bijvoorbeeld: "4". |
dependencies |
reeks van tekenreeksen | No | Lijst met pip-afhankelijkheidsaanduidingen. Elke vermelding volgt de standaard pip-syntaxis (bijvoorbeeld "pandas>=2.0"). |
Volledige voorbeelden
UDF op basis van UC
In dit voorbeeld wordt een op Unity Catalog gebaseerde UDF-operator gedefinieerd waarmee samengestelde rente wordt berekend.
schema: user-defined-operator-v0.1.0
type: uc-udf
name: Compound Interest
id: finance.compound_interest
version: '1.0.0'
description: >
Calculates compound interest based on principal, rate, and time period.
config:
type: object
properties:
principal:
type: string
title: Principal Amount
format: expression
x-ui:
widget: expression
port: input_data
annual_rate:
type: number
title: Annual Interest Rate
default: 5.0
minimum: 0
maximum: 100
x-ui:
widget: number
years:
type: number
title: Number of Years
default: 10
minimum: 1
maximum: 50
x-ui:
widget: slider
step: 1
compound_frequency:
type: string
title: Compounding Frequency
default: 'monthly'
x-ui:
widget: select
optionsSource:
type: static
values: ['daily', 'monthly', 'quarterly', 'annually']
required: [principal, annual_rate]
additionalProperties: false
ports:
input:
- name: input_data
title: Input Data
output:
- name: out
title: Output
operator Python run-function
In dit voorbeeld wordt een python-run-function operator gedefinieerd die klanten segmenteert met behulp van K-Means-clustering.
schema: user-defined-operator-v0.1.0
type: python-run-function
name: Customer Segmentation
id: ml.customer_segmentation
version: '1.2.0'
description: >
Segments customers into groups based on selected features
using K-Means clustering. Returns customer IDs with their
assigned segment numbers.
config:
type: object
properties:
num_segments:
type: integer
title: Number of Segments
description: How many customer segments to create
default: 3
minimum: 2
maximum: 20
x-ui:
widget: number
customer_id_column:
type: string
title: Customer ID Column
description: Column containing customer identifiers
x-ui:
widget: select
optionsSource:
type: inputColumns
port: customer_data
feature_columns:
type: array
title: Feature Columns
description: Columns to use for segmentation
items:
type: string
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: customer_data
normalize_features:
type: boolean
title: Normalize Features
description: Whether to normalize feature values before clustering
default: true
x-ui:
widget: toggle
required: [num_segments, customer_id_column, feature_columns]
additionalProperties: false
ports:
input:
- name: customer_data
title: Customer Data
mime: application/vnd.databricks.dataframe
output:
- name: segmented_customers
title: Segmented Customers
run_function:
type: inline
code: |
def run(config, inputs, spark):
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.ml.clustering import KMeans
df = inputs["customer_data"]
id_col = config["customer_id_column"]
features = config["feature_columns"]
k = config["num_segments"]
normalize = config.get("normalize_features", True)
assembler = VectorAssembler(inputCols=features, outputCol="features_vec")
assembled = assembler.transform(df)
if normalize:
scaler = StandardScaler(inputCol="features_vec", outputCol="scaled_features")
model = scaler.fit(assembled)
assembled = model.transform(assembled)
feature_col = "scaled_features"
else:
feature_col = "features_vec"
kmeans = KMeans(k=k, featuresCol=feature_col, predictionCol="segment")
result = kmeans.fit(assembled).transform(assembled)
return {"segmented_customers": result.select(id_col, "segment")}
environment:
environment_version: '4'
dependencies:
- 'scikit-learn>=1.3'
Snelzoekgids
Vereiste hoofdeigenschappen
-
schema:user-defined-operator-v0.1.0 -
name: Weergavenaam -
id: Unieke id -
description: Wat de operator doet -
config: JSON-schemaobject -
type:uc-udf,uc-udtf, ofpython-run-function -
version: Door de auteur gedefinieerde versietekenreeks
Optionele hoofdeigenschappen
-
ports: Definities van invoer- en uitvoerpoorten -
run_function: Inline Python code (alleenpython-run-function) -
environment: Python omgeving en afhankelijkheden (alleenpython-run-function)
Gegevenstypen van configuratie-eigenschappen
string | boolean | number | integer | array | object
UI-widgets
input | textarea | checkbox | toggle | number | slider | select | multi-select | expression
Optiesbronnen
static (vaste waarden) | inputColumns (vanaf invoerpoort)
Waarden opmaken
expression | table_source | file_source | column_expressions | sort_expressions | aggregation_expressions | ai_function_expressions | is_preview | string[]