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.
In deze zelfstudie bouwt u een Python UDF-operator voor Lakeflow Designer waarmee elke UI-widget wordt uitgevoerd die beschikbaar is in het user-defined-operator-v0.1.0 schema. Gebruik het als sjabloon wanneer u uw eigen operators maakt. Zie Door de gebruiker gedefinieerde operators in Lakeflow Designer voor een breder overzicht.
Overview
Deze operator is een demonstratie-UDF die parameters accepteert met behulp van elk beschikbaar UI-widgettype. Hiermee worden alle invoerwaarden samengevoegd in een beschrijvende tekenreeks, zodat u gemakkelijk kunt zien hoe elke widget gegevens doorgeeft aan uw functie.
De beschikbare widgettypen zijn:
| Widget | Description | Gegevenssoort |
|---|---|---|
expression |
Kiezer voor kolommen/expressies uit de invoerpoort | expression |
input |
Tekstinvoer met één regel | string |
textarea |
Tekstgebied met meerdere regels | string |
checkbox |
Selectievakje in-/uitschakelen | Booleaan |
toggle |
Wisselknop | Booleaan |
number |
Invoerveld voor getallen met minimum/maximum | number |
slider |
Numerieke schuifregelaar met bereik | number |
select |
Vervolgkeuzelijst met één selectie (statische waarden) | string |
select |
Vervolgkeuzelijst met één selectie (uit invoerkolommen) | string |
multi-select |
Meervoudige selectie (statische waarden) | string[] |
multi-select |
Meervoudige selectie (uit invoerkolommen) | string[] |
Step 1: de functie Python schrijven en testen
Definieer eerst de Python functie die alle verschillende parametertypen accepteert. Met deze functie worden alle invoer in een beschrijvende tekenreeks samengevoegd voor demonstratiedoeleinden.
def concat_all_widgets(
expression_widget_value: str,
input_widget_value: str,
textarea_widget_value: str,
checkbox_widget_value: bool,
toggle_widget_value: bool,
number_widget_value: float,
slider_widget_value: float,
select_static_widget_value: str,
select_columns_widget_value: str,
multiselect_static_widget_value: list,
multiselect_columns_widget_value: list
) -> str:
"""
Concatenates all input parameters into a descriptive string.
This demonstrates all UI widget types available in user-defined operators.
"""
lines = [
f"1: Expression (Column Picker) -> {expression_widget_value}",
f"2: Text Input (Single Line) -> {input_widget_value}",
f"3: Text Area (Multi-Line) -> {textarea_widget_value}",
f"4: Checkbox Option -> {checkbox_widget_value}",
f"5: Toggle Switch -> {toggle_widget_value}",
f"6: Number Input -> {number_widget_value}",
f"7: Slider Value -> {slider_widget_value}",
f"8: Select (Static Options) -> {select_static_widget_value}",
f"9: Select (From Input Columns) -> {select_columns_widget_value}",
f"10: Multi-Select (Static Options) -> [{', '.join(multiselect_static_widget_value or [])}]",
f"11: Multi-Select (From Input Columns) -> [{', '.join(multiselect_columns_widget_value or [])}]"
]
return "\n".join(lines)
Test de functie met de volgende code:
result = concat_all_widgets(
expression_widget_value="column_value_123",
input_widget_value="Hello World",
textarea_widget_value="Line 1\nLine 2\nLine 3",
checkbox_widget_value=True,
toggle_widget_value=False,
number_widget_value=42.5,
slider_widget_value=75.0,
select_static_widget_value="option_b",
select_columns_widget_value="amount",
multiselect_static_widget_value=["tag1", "tag3"],
multiselect_columns_widget_value=["col1", "col3"]
)
print(result)
Stap 2: de YAML-configuratie maken
De YAML-configuratie definieert hoe de operator wordt weergegeven in Lakeflow Designer. In dit voorbeeld ziet u elk beschikbaar widgettype:
schema: user-defined-operator-v0.1.0
type: uc-udf
name: All Widgets Demo
id: demo.all_widgets
version: '1.0.0'
description: >
A demonstration UDF that showcases all available UI widgets.
config:
type: object
properties:
# ============================================
# EXPRESSION WIDGET
# ============================================
expression_widget_value:
type: string
format: expression
title: 1. Expression (Column Picker)
examples:
- 'Select a column or enter an expression'
x-ui:
widget: expression
port: in
# ============================================
# INPUT WIDGET (single-line text)
# ============================================
input_widget_value:
type: string
title: 2. Text Input (Single Line)
default: default text
examples:
- 'Enter a single line of text'
x-ui:
widget: input
# ============================================
# TEXTAREA WIDGET (multi-line text)
# ============================================
textarea_widget_value:
type: string
title: 3. Text Area (Multi-Line)
default: Sample text
examples:
- 'Enter multiple lines of text here...'
x-ui:
widget: textarea
rows: 3
# ============================================
# CHECKBOX WIDGET (boolean)
# ============================================
checkbox_widget_value:
type: boolean
title: 4. Checkbox Option
default: true
x-ui:
widget: checkbox
# ============================================
# TOGGLE WIDGET (boolean switch)
# ============================================
toggle_widget_value:
type: boolean
title: 5. Toggle Switch
default: false
x-ui:
widget: toggle
# ============================================
# NUMBER WIDGET (numeric input with min/max)
# ============================================
number_widget_value:
type: number
title: 6. Number Input
default: 50
minimum: 0
maximum: 100
examples:
- 'Enter a number (0-100)'
x-ui:
widget: number
# ============================================
# SLIDER WIDGET (numeric slider)
# ============================================
slider_widget_value:
type: number
title: 7. Slider Value
default: 50
minimum: 0
maximum: 100
x-ui:
widget: slider
step: 5
# ============================================
# SELECT WIDGET with STATIC options
# ============================================
select_static_widget_value:
type: string
title: 8. Select (Static Options)
default: option_a
examples:
- 'Choose an option'
x-ui:
widget: select
optionsSource:
type: static
values:
- option_a
- option_b
- option_c
# ============================================
# SELECT WIDGET with INPUT COLUMNS options
# ============================================
select_columns_widget_value:
type: string
title: 9. Select (From Input Columns)
examples:
- 'Select a column from input'
x-ui:
widget: select
optionsSource:
type: inputColumns
port: in
# ============================================
# MULTI-SELECT WIDGET with STATIC options
# ============================================
multiselect_static_widget_value:
type: array
items:
type: string
title: 10. Multi-Select (Static Options)
default:
- tag1
- tag2
examples:
- 'Select one or more tags'
x-ui:
widget: multi-select
optionsSource:
type: static
values:
- tag1
- tag2
- tag3
- tag4
- tag5
# ============================================
# MULTI-SELECT WIDGET with INPUT COLUMNS options
# ============================================
multiselect_columns_widget_value:
type: array
items:
type: string
title: 11. Multi-Select (From Input Columns)
examples:
- 'Select one or more columns'
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: in
required:
- expression_widget_value
additionalProperties: false
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
Hoogtepunten van het schema
| Configuratiesleutel | Widget | Gegevenssoort | Purpose |
|---|---|---|---|
expression_widget_value |
expression |
expression | Kies een kolom of expressie uit invoergegevens. |
input_widget_value |
input |
string | Tekstinvoer met één regel. |
textarea_widget_value |
textarea |
string | Tekstinvoer met meerdere regels. |
checkbox_widget_value |
checkbox |
Booleaan | Booleaans selectievakje. |
toggle_widget_value |
toggle |
Booleaan | Booleaanse wisselknop. |
number_widget_value |
number |
number | Numerieke invoer met minimale/maximale validatie. |
slider_widget_value |
slider |
number | Numerieke schuifregelaar met stapstappen. |
select_static_widget_value |
select |
string | Vervolgkeuzelijst met vastgelegde opties. |
select_columns_widget_value |
select |
string | Keuzelijst gevuld met gegevens uit invoerkolommen. |
multiselect_static_widget_value |
multi-select |
string[] | Meervoudige selectie met vastgelegde opties. |
multiselect_columns_widget_value |
multi-select |
string[] | Meervoudige selectie gevuld vanuit invoerkolommen. |
Brontypen voor opties
Voor select- en multi-select-widgets moet u een optionsSource opgeven:
Statische opties: Vaste lijst met waarden:
optionsSource:
type: static
values:
- value1
- value2
- value3
Invoerkolommen: dynamische lijst van invoerpoortkolommen:
optionsSource:
type: inputColumns
port: in
Zie de DOOR de gebruiker gedefinieerde YAML-verwijzing voor een uitgebreide handleiding voor alle beschikbare eigenschappen, gegevenstypen, widgets en opties.
Stap 3: de unity-catalogusfunctie maken
Combineer de YAML-configuratie en Python-functie in één CREATE FUNCTION instructie. Houd er rekening mee dat string[]-waarden (meervoudige selectie) als ARRAY<STRING> worden doorgegeven aan de UDF.
Het voorbeeld creëert de functie in main.example_output. Maak eerst het schema aan als het niet bestaat:
CREATE SCHEMA IF NOT EXISTS main.example_output
CREATE OR REPLACE FUNCTION main.example_output.all_widgets_demo(
expression_widget_value STRING,
input_widget_value STRING,
textarea_widget_value STRING,
checkbox_widget_value BOOLEAN,
toggle_widget_value BOOLEAN,
number_widget_value DOUBLE,
slider_widget_value DOUBLE,
select_static_widget_value STRING,
select_columns_widget_value STRING,
multiselect_static_widget_value ARRAY<STRING>,
multiselect_columns_widget_value ARRAY<STRING>
)
RETURNS STRING
LANGUAGE PYTHON
AS $$
"""
schema: user-defined-operator-v0.1.0
type: uc-udf
name: All Widgets Demo
id: demo.all_widgets
version: "1.0.0"
description: >
A demonstration UDF that showcases all available UI widgets.
config:
type: object
properties:
expression_widget_value:
type: string
format: expression
title: 1. Expression (Column Picker)
examples:
- "Select a column or enter an expression"
x-ui:
widget: expression
port: in
input_widget_value:
type: string
title: 2. Text Input (Single Line)
default: "default text"
examples:
- "Enter a single line of text"
x-ui:
widget: input
textarea_widget_value:
type: string
title: 3. Text Area (Multi-Line)
default: Sample text
examples:
- "Enter multiple lines of text here..."
x-ui:
widget: textarea
rows: 3
checkbox_widget_value:
type: boolean
title: 4. Checkbox Option
default: true
x-ui:
widget: checkbox
toggle_widget_value:
type: boolean
title: 5. Toggle Switch
default: false
x-ui:
widget: toggle
number_widget_value:
type: number
title: 6. Number Input
default: 50
minimum: 0
maximum: 100
examples:
- "Enter a number (0-100)"
x-ui:
widget: number
slider_widget_value:
type: number
title: 7. Slider Value
default: 50
minimum: 0
maximum: 100
x-ui:
widget: slider
step: 5
select_static_widget_value:
type: string
title: 8. Select (Static Options)
default: option_a
examples:
- "Choose an option"
x-ui:
widget: select
optionsSource:
type: static
values:
- option_a
- option_b
- option_c
select_columns_widget_value:
type: string
title: 9. Select (From Input Columns)
examples:
- "Select a column from input"
x-ui:
widget: select
optionsSource:
type: inputColumns
port: in
multiselect_static_widget_value:
type: array
items:
type: string
title: 10. Multi-Select (Static Options)
default:
- tag1
- tag2
examples:
- "Select one or more tags"
x-ui:
widget: multi-select
optionsSource:
type: static
values:
- tag1
- tag2
- tag3
- tag4
- tag5
multiselect_columns_widget_value:
type: array
items:
type: string
title: 11. Multi-Select (From Input Columns)
examples:
- "Select one or more columns"
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: in
required:
- expression_widget_value
additionalProperties: false
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
"""
def concat_all_widgets(
expression_widget_value: str,
input_widget_value: str,
textarea_widget_value: str,
checkbox_widget_value: bool,
toggle_widget_value: bool,
number_widget_value: float,
slider_widget_value: float,
select_static_widget_value: str,
select_columns_widget_value: str,
multiselect_static_widget_value: list,
multiselect_columns_widget_value: list
) -> str:
lines = [
f"1: Expression (Column Picker) -> {expression_widget_value}",
f"2: Text Input (Single Line) -> {input_widget_value}",
f"3: Text Area (Multi-Line) -> {textarea_widget_value}",
f"4: Checkbox Option -> {checkbox_widget_value}",
f"5: Toggle Switch -> {toggle_widget_value}",
f"6: Number Input -> {number_widget_value}",
f"7: Slider Value -> {slider_widget_value}",
f"8: Select (Static Options) -> {select_static_widget_value}",
f"9: Select (From Input Columns) -> {select_columns_widget_value}",
f"10: Multi-Select (Static Options) -> [{', '.join(multiselect_static_widget_value or [])}]",
f"11: Multi-Select (From Input Columns) -> [{', '.join(multiselect_columns_widget_value or [])}]"
]
return "\n".join(lines)
return concat_all_widgets(
expression_widget_value,
input_widget_value,
textarea_widget_value,
checkbox_widget_value,
toggle_widget_value,
number_widget_value,
slider_widget_value,
select_static_widget_value,
select_columns_widget_value,
multiselect_static_widget_value,
multiselect_columns_widget_value
)
$$
Stap 4: De functie testen
Test de UC-functie rechtstreeks met SQL:
SELECT main.example_output.all_widgets_demo(
expression_widget_value => 'my_column_value',
input_widget_value => 'Hello World',
textarea_widget_value => 'Multi\nLine\nText',
checkbox_widget_value => TRUE,
toggle_widget_value => FALSE,
number_widget_value => 42.5,
slider_widget_value => 75.0,
select_static_widget_value => 'option_b',
select_columns_widget_value => 'amount',
multiselect_static_widget_value => array('tag1', 'tag3'),
multiselect_columns_widget_value => array('col1', 'col2', 'col3')
) AS result;
Stap 5: De operator registreren
Voeg de operator toe aan uw .user_defined_operators.yaml bestand:
operators:
- catalog: main
schema: example_output
functionName: all_widgets_demo
Stap 6: Machtigingen instellen
Toegang verlenen aan gebruikers die deze operator moeten gebruiken:
GRANT USE SCHEMA ON SCHEMA main.example_output TO `<user>`;
GRANT EXECUTE ON FUNCTION main.example_output.all_widgets_demo TO `<user>`;
Operator gebruiken in Lakeflow Designer
Nadat deze is geregistreerd, verschijnt de operator in Lakeflow Designer met een uitgebreid configuratievenster met daarin:
- Een expressiekiezer voor kolomselectie
- Tekstinvoer (één regel en meerdere regels)
- Booleaanse besturingselementen (selectievakje en wisselknop)
- Numerieke invoer (numeriek veld en schuifregelaar)
- Vervolgkeuzelijsten met zowel statische als dynamische opties
- Besturingselementen voor meervoudige selectie voor het kiezen van meerdere waarden
Deze operator fungeert als een nuttige referentie om te begrijpen hoe elk widgettype wordt weergegeven en gegevens doorgeeft aan uw functie.
Zie UI-widgets voor het gegevenstype en de opties van elke widget.