Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban egy, a Lakeflow Designerhez készült Python UDF-operátort hoz létre, amely a user-defined-operator-v0.1.0 sémában elérhető összes felületi elemet használja. Használja sablonként saját operátorok létrehozásakor. A szélesebb körű áttekintésért tekintse meg a Felhasználó által definiált operátorokat a Lakeflow Designerben.
Overview
Ez az operátor egy bemutató UDF, amely minden elérhető felhasználói felületi widgettípussal elfogadja a paramétereket. Az összes bemeneti értéket leíró sztringbe fűzi össze, így könnyen áttekinthető, hogy az egyes vezérlők hogyan továbbítják az adatokat a függvénynek.
Az elérhető vezérlőtípusok a következők:
| Widget | Description | Adattípus |
|---|---|---|
expression |
Oszlop- vagy kifejezésválasztó bemeneti portról | kifejezés |
input |
Egysoros szövegbevitel | karakterlánc |
textarea |
Többsoros szövegterület | karakterlánc |
checkbox |
Jelölőnégyzet-kapcsoló | logikai |
toggle |
Váltás váltógombbal | logikai |
number |
Számbevitel minimális/maximális értékekkel | number |
slider |
Numerikus tartományos csúszka | number |
select |
Egyválasztós legördülő lista (statikus értékek) | karakterlánc |
select |
Egyválasztós legördülő lista (bemeneti oszlopokból) | karakterlánc |
multi-select |
Többszörös kijelölés (statikus értékek) | string[] |
multi-select |
Többszörös kijelölés (bemeneti oszlopokból) | string[] |
Step 1: A Python függvény írása és tesztelése
Először határozza meg a Python függvényt, amely az összes különböző paramétertípust elfogadja. Ez a függvény egyszerűen összefűzi az összes bemenetet egy leíró sztringbe bemutató célokra.
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)
Tesztelje a függvényt a következő kóddal:
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)
2. lépés: A YAML-konfiguráció létrehozása
A YAML-konfiguráció határozza meg, hogyan jelenik meg az operátor a Lakeflow Designerben. Ez a példa az összes elérhető widgettípust bemutatja:
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
Sémakiemelések
| Konfigurációs kulcs | Widget | Adattípus | Alkalmazás célja |
|---|---|---|---|
expression_widget_value |
expression |
kifejezés | Válasszon egy oszlopot vagy kifejezést a bemeneti adatokból. |
input_widget_value |
input |
karakterlánc | Egysoros szövegbevitel. |
textarea_widget_value |
textarea |
karakterlánc | Többsoros szövegbevitel. |
checkbox_widget_value |
checkbox |
logikai | Logikai jelölőnégyzet. |
toggle_widget_value |
toggle |
logikai | Logikai váltókapcsoló. |
number_widget_value |
number |
number | Numerikus bemenet minimális/maximális ellenőrzéssel. |
slider_widget_value |
slider |
number | Numerikus csúszka lépésenkénti növekményekkel. |
select_static_widget_value |
select |
karakterlánc | Legördülő lista a rögzített beállításokkal. |
select_columns_widget_value |
select |
karakterlánc | Beviteli oszlopokból kitöltött legördülő lista. |
multiselect_static_widget_value |
multi-select |
string[] | Többszörös kijelölés fixen beépített lehetőségekkel. |
multiselect_columns_widget_value |
multi-select |
string[] | A többválasztós mező a bemeneti oszlopokból van feltöltve. |
Beállítások forrástípusai
A select és multi-select widgetekhez meg kell adnia egy optionsSource elemet:
Statikus beállítások: Az értékek rögzített listája:
optionsSource:
type: static
values:
- value1
- value2
- value3
Bemeneti oszlopok: Dinamikus lista bemeneti portoszlopokból:
optionsSource:
type: inputColumns
port: in
A felhasználó által definiált operátor YAML-referenciájában átfogó útmutatót talál az összes elérhető tulajdonságról, adattípusról, widgetről és beállításról.
3. lépés: A Unity Catalog függvény létrehozása
A YAML-konfigurációt és Python függvényt egyetlen CREATE FUNCTION utasításba kombinálhatja. Vegye figyelembe, hogy a string[] (többes kijelölésű) értékek ARRAY<STRING> formában kerülnek átadásra az UDF-nek.
A példa létrehozza a függvényt -ben main.example_output. Először hozd létre a sémát, ha nem létezik:
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
)
$$
4. lépés: A függvény tesztelése
Tesztelje az UC függvényt közvetlenül az SQL használatával:
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;
5. lépés: Az operátor regisztrálása
Adja hozzá az operátort a(z) .user_defined_operators.yaml fájlhoz:
operators:
- catalog: main
schema: example_output
functionName: all_widgets_demo
6. lépés: Engedélyek beállítása
Hozzáférés biztosítása azoknak a felhasználóknak, akiknek ezt az operátort kell használniuk:
GRANT USE SCHEMA ON SCHEMA main.example_output TO `<user>`;
GRANT EXECUTE ON FUNCTION main.example_output.all_widgets_demo TO `<user>`;
Az operátor használata a Lakeflow Designerben
A regisztráció után az operátor megjelenik a Lakeflow Designerben egy átfogó konfigurációs panelen, amely a következőket tartalmazza:
- Kifejezésválasztó az oszlopkijelöléshez
- Szöveges bemenetek (egysoros és többsoros)
- Logikai vezérlők (jelölőnégyzet és kapcsoló)
- Numerikus bemenetek (számmező és csúszka)
- Legördülő listák statikus és dinamikus beállításokkal
- Több érték kiválasztására szolgáló vezérlők
Ez az operátor hasznos hivatkozásként szolgál annak megértéséhez, hogy az egyes vezérlőtípusok hogyan jelenítik meg és továbbítja az adatokat a függvénynek.
Minden widget adattípusát és beállításait a felhasználói felületi vezérlőkben találhatja meg.