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.
Uživatelem definované operátory v Návrháři Lakeflow jsou definovány v YAML. Všechny typy operátorů (uc-udfa uc-udtfpython-run-function) používají user-defined-operator-v0.1.0 schéma, které definuje konfigurační pole pomocí formátu schématu JSON.
Informace o tom, jak vytvářet uživatelem definované operátory, naleznete v tématu Uživatelem definované operátory v Návrháři Lakeflow.
Kořenové vlastnosti
Každý soubor YAML operátoru začíná sadou kořenových vlastností, které identifikují operátor a definují jeho chování. Následující příklad ukazuje obecnou strukturu:
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'
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
schema |
řetězec | Yes | Identifikátor schématu. Musí být user-defined-operator-v0.1.0. |
type |
řetězec | Yes | Typ operátoru: uc-udf, uc-udtfnebo python-run-function. |
name |
řetězec | Yes | Zobrazovaný název operátoru. Nechte ho krátký tak, aby se vešly do uživatelského rozhraní Návrháře Lakeflow. Minimální délka 1 znaku. |
id |
řetězec | Yes | Jedinečný identifikátor pro typ operátoru. Minimální délka 1 znaku. Zvažte použití oborů názvů (například finance. ) ml.ke kategorizaci operátorů. |
description |
řetězec | Yes | Podrobný popis toho, co operátor dělá. Zobrazí se uživatelům v uživatelském rozhraní. Pro delší popisy použijte víceřádkovou syntaxi YAML (>). |
config |
objekt | Yes | Objekt schématu JSON, který definuje pole konfigurace. Viz konfigurace. |
ports |
objekt | Ne | Definice vstupních a výstupních portů Vizte Porty. |
version |
řetězec | Yes | Řetězec verze (například "1.0.0"). Pomocí tohoto příkazu můžete sledovat vydání vlastních operátorů. |
run_function |
objekt | Ne | Vložený Python kód pro operátory python-run-function. Viz run_function. |
environment |
objekt | Ne | Python konfigurace prostředí, včetně závislostí. Viz environment. |
Přístavy
Porty definují, jak se operátor připojuje k jiným operátorům v kanálu. Objekt ports obsahuje input a output pole.
ports:
input:
- name: input_data
title: Input Data
mime: application/vnd.databricks.dataframe
allowMultiple: true
required: true
output:
- name: out
title: Output
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
name |
řetězec | Yes | Jedinečný identifikátor portu. Používá se v odkazech na připojení a konfiguraci. |
title |
řetězec | Ne | Popisek čitelný pro člověka zobrazený v uživatelském rozhraní |
mime |
řetězec | Ne | Typ MIME pro data portu. Například: application/vnd.databricks.dataframe. |
allowMultiple |
boolean | Ne | Pokud trueport přijímá více příchozích připojení. Výchozí hodnota je false, kde port přijímá jedno připojení a zapojení nového zdroje nahradí stávající. |
required |
boolean | Ne | Pokud falseje port volitelný. Výchozí hodnota: true. |
Akceptují se pouze vlastnosti zdokumentovaného portu. Ověření schématu odmítne neznámé klíče (například starší label pole).
Příklady portů
UDF se vstupními a výstupními porty:
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
UDTF se vstupními a výstupními porty:
ports:
input:
- name: input_data
title: Input Data
output:
- name: clustered_data
title: Clustered Results
Python-run-function s více vstupy a volitelným portem:
ports:
input:
- name: main_data
title: Main Data
- name: reference_data
title: Reference Table
required: false
output:
- name: joined_output
title: Joined Output
Nastavení
Pole config je objekt schématu JSON. Každé konfigurační pole definujete jako vlastnost v rámci schématu. Tento formát poskytuje přístup ke standardním funkcím ověřování schématu JSON, jako jsou enum, minimummaximum, a examples.
Objekt config musí mít type: object a properties mapu. Volitelně můžete zahrnout required (pole požadovaných názvů vlastností) a 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
Pole vlastností konfigurace
Každá vlastnost v objektu config.properties podporuje následující standardní pole schématu JSON:
| Obor | Typ | Description |
|---|---|---|
type |
řetězec | Datový typ: string, , numberinteger, boolean, arraynebo object. |
title |
řetězec | Popisek čitelný pro člověka zobrazený v uživatelském rozhraní |
description |
řetězec | Text nápovědy zobrazený uživatelům |
default |
any | Výchozí hodnota pole |
examples |
pole | Příklad hodnot pro pole. |
enum |
pole | Pevný seznam povolených hodnot |
format |
řetězec | Sémantický typ nápovědy. Viz Hodnoty formátu. |
minimum |
number | Minimální povolená hodnota (pro number a integer typy). |
maximum |
number | Maximální povolená hodnota (pro number a integer typy). |
items |
objekt | Schéma pro prvky pole (pokud type je array). |
properties |
objekt | Definice vnořených vlastností (když type je object). |
required |
pole | Seznam požadovaných názvů vnořených vlastností (pokud type je object). |
Podporují se také další standardní pole schématu JSON, například minLength, maxLengthpattern, a const jsou také podporována.
Formátování hodnot
Pole format vlastnosti konfigurace poskytuje sémantický typ nápovědu, která říká Lakeflow Designeru, jak interpretovat hodnotu. Tyto rady umožňují specializované chování a ověřování uživatelského rozhraní.
| Formát | Description |
|---|---|
expression |
Odkaz na sloupec nebo výraz SQL |
table_source |
Referenční informace ke zdroji tabulky |
file_source |
Referenční informace ke zdroji souborů |
column_expressions |
Výrazy sloupců |
sort_expressions |
Seřaďte výrazy. |
aggregation_expressions |
Agregační výrazy. |
ai_function_expressions |
Výrazy funkce AI |
is_preview |
Příznak automatického režimu náhledu Návrhář Lakeflow to nastaví na true během náhledu pracovního postupu. Název konfigurační vlastnosti je libovolný; záleží jen na značce format: is_preview . Pomocí tohoto příkazu můžete přeskočit vedlejší účinky, jako jsou volání externího rozhraní API během období Preview. |
string[] |
Pole řetězců. |
Widgety uživatelského rozhraní
Widgety přizpůsobují vykreslování konfiguračního pole v rozhraní Návrháře Lakeflow. Definujte widgety ve x-ui vlastnosti pro každou vlastnost konfigurace. Pokud widget vynecháte, návrhář Lakeflow použije výchozí widget založený na datovém typu.
| Widget | Datový typ | Description |
|---|---|---|
input |
řetězec | Jednořádkový textový vstup. |
textarea |
řetězec | Textová oblast s více řádky Podporuje volitelnou rows vlastnost. |
checkbox |
boolean | Standardní zaškrtávací políčko. |
toggle |
boolean | Přepínací přepínač. |
number |
number/integer | Číselný vstup s volitelnými omezeními |
slider |
number/integer | Posuvník vizuálu pro číselné oblasti Podporuje volitelnou step vlastnost. |
select |
řetězec | Rozevírací seznam s jedním výběrem Vyžaduje optionsSource. |
multi-select |
pole | Rozevírací seznam s vícenásobným výběrem Vyžaduje optionsSource. |
expression |
řetězec | Selektor sloupců a výrazů Vyžaduje port. |
input
Jednořádkové textové vstupní pole
api_endpoint:
type: string
title: API Endpoint
x-ui:
widget: input
textarea
Víceřádkové textové oblasti pro delší obsah Podporuje volitelnou rows vlastnost pro řízení výšky.
message_body:
type: string
title: Message Body
x-ui:
widget: textarea
rows: 4
checkbox
Standardní zaškrtávací políčko pro logické hodnoty.
send_notification:
type: boolean
title: Send Notification
default: false
x-ui:
widget: checkbox
toggle
Přepínač pro logické hodnoty.
enable_logging:
type: boolean
title: Enable Logging
default: true
x-ui:
widget: toggle
number
Číselné vstupní pole Použití minimum a maximum na samotné vlastnosti k omezení rozsahu.
num_clusters:
type: number
title: Number of Clusters
default: 3
minimum: 1
maximum: 100
x-ui:
widget: number
slider
Posuvník vizuálu pro výběr číselných hodnot v rozsahu K nastavení rozsahu a minimum k maximum řízení přírůstku použijte step a x-ui u vlastnosti.
confidence_threshold:
type: number
title: Confidence Threshold
default: 0.8
minimum: 0
maximum: 1
x-ui:
widget: slider
step: 0.05
select
Rozevírací seznam s jedním výběrem
optionsSource Vyžaduje, aby bylo možné definovat, odkud hodnoty rozevíracího seznamu pocházejí. Viz Možnosti zdrojů.
aggregation_type:
type: string
title: Aggregation Type
x-ui:
widget: select
optionsSource:
type: static
values: ['sum', 'avg', 'min', 'max', 'count']
multi-select
Rozevírací seznam s vícenásobným výběrem pro výběr více hodnot Použijte type: array s items: { type: string } vlastností. Vyžaduje .optionsSource Viz Možnosti zdrojů.
feature_columns:
type: array
title: Feature Columns
items:
type: string
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: input_data
expression
Selektor sloupců a výrazů, který umožňuje uživatelům vybrat sloupec ze vstupních dat nebo napsat vlastní výraz SQL. Nastavte format: expression vlastnost a zadejte vstup port v x-ui. To je užitečné:
- Kdy má uživatel vybrat sloupec ze vstupních dat.
- Když uživatel může chtít napsat vlastní výraz SQL.
- Parametry, které odkazují na dynamická data v kanálu.
amount:
type: string
title: Amount
format: expression
x-ui:
widget: expression
port: input_data
Zdroje možností
U select widgetů multi-select je nutné definovat, odkud možnosti rozevíracího seznamu pocházejí z použití optionsSource. Existují dva zdroje: static (pevný seznam definovaný v YAML) a inputColumns (názvy sloupců ze vstupního portu).
Statické možnosti
Pevný seznam hodnot definovaných v YAML.
optionsSource:
type: static
values: ['option1', 'option2', 'option3']
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
type |
řetězec | Yes | Musí být static. |
values |
pole | Yes | Pole řetězcových hodnot pro rozevírací seznam |
Vstupní sloupce
Dynamicky naplní rozevírací seznam názvy sloupců ze vstupního portu.
optionsSource:
type: inputColumns
port: input_data
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
type |
řetězec | Yes | Musí být inputColumns. |
port |
řetězec | Yes | Název vstupního portu pro získání názvů sloupců. Musí se shodovat s name jedním z vašich definovaných vstupních portů. |
run_function
Vlastnost run_function umožňuje vložit kód Python přímo do konfigurace YAML pro operátory python-run-function. Tím se eliminuje potřeba zaregistrovat samostatnou funkci Katalogu Unity.
run_function:
type: inline
code: |
def run(config, inputs, spark):
df = inputs["data"]
threshold = config["threshold"]
return {"out": df.filter(df["score"] > threshold)}
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
type |
řetězec | Yes | Musí být inline. |
code |
řetězec | Yes | Python zdrojového kódu. Musí definovat run() funkci. |
Funkce run() přijímá tři argumenty:
-
config: Slovník konfiguračních hodnot nastavených uživatelem v uživatelském rozhraní. -
inputs: Slovník mapuje názvy vstupních portů na datové rámce. -
spark: Aktivní SparkSession.
Funkce musí vrátit názvy výstupních portů mapování slovníku na datové rámce. Klíče musí přesně odpovídat name poli každého výstupního portu definovaného v ports.output. Například s výstupním portem s názvem out:
return {"out": result_df}
S několika výstupními porty:
return {"match": match_df, "rest": rest_df}
environment
Vlastnost environment určuje Python prostředí pro operátory python-run-function. Použijte ji k připnutí verze prostředí a deklarujte závislosti pip.
environment:
environment_version: '4'
dependencies:
- 'scikit-learn>=1.3'
- 'pandas>=2.0'
| Vlastnictví | Typ | Povinné | Description |
|---|---|---|---|
environment_version |
řetězec | Ne | Verze bezserverového prostředí, která nastavuje základní Python runtime a předinstalované knihovny. Dostupné verze najdete v tématu Bezserverové verze prostředí. Například: "4". |
dependencies |
pole řetězců | Ne | Seznam specifikátorů závislostí pip Každá položka se řídí standardní syntaxí pip (například "pandas>=2.0"). |
Kompletní příklady
Funkce definovaná uživatelem založená na UC
Tento příklad definuje operátor UDF založený na katalogu Unity, který vypočítá složený úrok.
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
Python operátor run-function
Tento příklad definuje python-run-function operátor, který segmentuje zákazníky pomocí clusteringu K-Means.
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'
Stručná referenční dokumentace
Požadované kořenové vlastnosti
-
schema:user-defined-operator-v0.1.0 -
name: Zobrazovaný název -
id: Jedinečný identifikátor -
description: Co operátor dělá -
config: Objekt schématu JSON -
type:uc-udf,uc-udtfnebopython-run-function -
version: Řetězec verze definovaný autorem
Volitelné kořenové vlastnosti
-
ports: Definice vstupních a výstupních portů -
run_function: Vložený kód Python (pouzepython-run-function) -
environment: Python prostředí a závislosti (pouzepython-run-function)
Konfigurace datových typů vlastností
string | boolean | number | integer | array | object
Widgety uživatelského rozhraní
input | textarea | checkbox | toggle | number | slider | select | multi-select | expression
Zdroje možností
static (pevné hodnoty) | inputColumns (ze vstupního portu)
Formátování hodnot
expression | table_source | file_source | column_expressions | sort_expressions | aggregation_expressions | ai_function_expressions | is_preview | string[]