Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Important
Esta característica está en versión preliminar pública.
En este tutorial de referencia se crea un operador de UDF de Python para Lakeflow Designer que ejerce cada widget de interfaz de usuario disponible en el esquema user-defined-operator-v0.1.0. Úselo como plantilla al crear sus propios operadores. Para obtener información general más amplia, consulte Operadores definidos por el usuario en Lakeflow Designer.
Información general
Este operador es una UDF de demostración que acepta parámetros mediante cada tipo de widget de interfaz de usuario disponible. Concatena todos los valores de entrada en una cadena descriptiva, lo que facilita la visualización de cómo cada widget pasa datos a la función.
Los tipos de widget disponibles son:
| Widget | Description | Tipo de datos |
|---|---|---|
expression |
Selector de columnas y expresiones del puerto de entrada | expression |
input |
Entrada de texto de una sola línea | string |
textarea |
Área de texto de varias líneas | string |
checkbox |
Conmutador de casilla de verificación | Boolean |
toggle |
Interruptor de alternancia | Boolean |
number |
Entrada de número con min/max | number |
slider |
Control deslizante numérico con rango | number |
select |
Lista desplegable de selección única (valores estáticos) | string |
select |
Lista desplegable de selección simple (a partir de columnas de entrada) | string |
multi-select |
Selección múltiple (valores estáticos) | string[] |
multi-select |
Selección múltiple (en columnas de entrada) | string[] |
Step 1: Escribir y probar la función Python
En primer lugar, defina la función Python que acepta todos los tipos de parámetros diferentes. Esta función simplemente concatena todas las entradas en una cadena descriptiva con fines de demostración.
def concat_all_widgets(
# expression widget - column value from input
expr_value: str,
# input widget - single line text
text_input: str,
# textarea widget - multi line text
text_area: str,
# checkbox widget - boolean
checkbox_flag: bool,
# toggle widget - boolean
toggle_flag: bool,
# number widget - numeric input
number_value: float,
# slider widget - numeric slider
slider_value: float,
# select widget with static options
select_static: str,
# select widget with inputColumns options
select_column: str,
# multi-select widget with static options (array of strings)
multi_select_static: list,
# multi-select widget with inputColumns options (array of strings)
multi_select_columns: 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) -> {expr_value}",
f"2: Text Input (Single Line) -> {text_input}",
f"3: Text Area (Multi-Line) -> {text_area}",
f"4: Checkbox Option -> {checkbox_flag}",
f"5: Toggle Switch -> {toggle_flag}",
f"6: Number Input -> {number_value}",
f"7: Slider Value -> {slider_value}",
f"8: Select (Static Options) -> {select_static}",
f"9: Select (From Input Columns) -> {select_column}",
f"10: Multi-Select (Static Options) -> [{', '.join(multi_select_static or [])}]",
f"11: Multi-Select (From Input Columns) -> [{', '.join(multi_select_columns or [])}]"
]
return "\n".join(lines)
Pruebe la función con el código siguiente:
result = concat_all_widgets(
expr_value="column_value_123",
text_input="Hello World",
text_area="Line 1\nLine 2\nLine 3",
checkbox_flag=True,
toggle_flag=False,
number_value=42.5,
slider_value=75.0,
select_static="option_b",
select_column="amount",
multi_select_static=["tag1", "tag3"],
multi_select_columns=["col1", "col3"]
)
print(result)
Paso 2: Creación de la configuración de YAML
La configuración de YAML define cómo aparece el operador en Lakeflow Designer. En este ejemplo se muestran todos los tipos de widget disponibles:
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
# ============================================
expr_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)
# ============================================
text_input:
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)
# ============================================
text_area:
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_flag:
type: boolean
title: 4. Checkbox Option
default: true
x-ui:
widget: checkbox
# ============================================
# TOGGLE WIDGET (boolean switch)
# ============================================
toggle_flag:
type: boolean
title: 5. Toggle Switch
default: false
x-ui:
widget: toggle
# ============================================
# NUMBER WIDGET (numeric input with min/max)
# ============================================
number_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_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:
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_column:
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
# ============================================
multi_select_static:
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
# ============================================
multi_select_columns:
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:
- expr_value
additionalProperties: false
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
Aspectos destacados del esquema
| Clave de configuración | Widget | Tipo de datos | propósito |
|---|---|---|---|
expr_value |
expression |
expression | Elija una columna o expresión de los datos de entrada. |
text_input |
input |
string | Entrada de texto de una sola línea. |
text_area |
textarea |
string | Entrada de texto de varias líneas. |
checkbox_flag |
checkbox |
Boolean | Casilla de verificación booleana. |
toggle_flag |
toggle |
Boolean | Modificador de alternancia booleano. |
number_value |
number |
number | Entrada numérica con validación mínima/máxima. |
slider_value |
slider |
number | Deslizador numérico con incrementos por pasos. |
select_static |
select |
string | Lista desplegable con opciones codificadas de forma fija. |
select_column |
select |
string | Lista desplegable generada a partir de las columnas de entrada. |
multi_select_static |
multi-select |
string[] | Selección múltiple con opciones codificadas de forma fija. |
multi_select_columns |
multi-select |
string[] | Selección múltiple generada a partir de las columnas de entrada. |
Tipos de origen de opciones
Para los widgets select y multi-select, debe especificar un optionsSource:
Opciones estáticas : lista fija de valores:
optionsSource:
type: static
values:
- value1
- value2
- value3
Columnas de entrada : lista dinámica de columnas de puerto de entrada:
optionsSource:
type: inputColumns
port: in
Consulte la referencia de YAML del operador definido por el usuario para obtener una guía completa de todas las propiedades, tipos de datos, widgets y opciones disponibles.
Paso 3: Crear la función catálogo de Unity
Combine la configuración de YAML y la función Python en una sola instrucción CREATE FUNCTION. Tenga en cuenta que los valores de string[] (selección múltiple) se pasan como ARRAY<STRING> a la UDF.
CREATE OR REPLACE FUNCTION main.my_schema.all_widgets_demo(
expr_value STRING,
text_input STRING,
text_area STRING,
checkbox_flag BOOLEAN,
toggle_flag BOOLEAN,
number_value DOUBLE,
slider_value DOUBLE,
select_static STRING,
select_column STRING,
multi_select_static ARRAY<STRING>,
multi_select_columns 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:
expr_value:
type: string
format: expression
title: 1. Expression (Column Picker)
examples:
- "Select a column or enter an expression"
x-ui:
widget: expression
port: in
text_input:
type: string
title: 2. Text Input (Single Line)
default: "default text"
examples:
- "Enter a single line of text"
x-ui:
widget: input
text_area:
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_flag:
type: boolean
title: 4. Checkbox Option
default: true
x-ui:
widget: checkbox
toggle_flag:
type: boolean
title: 5. Toggle Switch
default: false
x-ui:
widget: toggle
number_value:
type: number
title: 6. Number Input
default: 50
minimum: 0
maximum: 100
examples:
- "Enter a number (0-100)"
x-ui:
widget: number
slider_value:
type: number
title: 7. Slider Value
default: 50
minimum: 0
maximum: 100
x-ui:
widget: slider
step: 5
select_static:
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_column:
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_static:
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_columns:
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:
- expr_value
additionalProperties: false
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
"""
def concat_all_widgets(
expr_value: str,
text_input: str,
text_area: str,
checkbox_flag: bool,
toggle_flag: bool,
number_value: float,
slider_value: float,
select_static: str,
select_column: str,
multi_select_static: list,
multi_select_columns: list
) -> str:
lines = [
f"1: Expression (Column Picker) -> {expr_value}",
f"2: Text Input (Single Line) -> {text_input}",
f"3: Text Area (Multi-Line) -> {text_area}",
f"4: Checkbox Option -> {checkbox_flag}",
f"5: Toggle Switch -> {toggle_flag}",
f"6: Number Input -> {number_value}",
f"7: Slider Value -> {slider_value}",
f"8: Select (Static Options) -> {select_static}",
f"9: Select (From Input Columns) -> {select_column}",
f"10: Multi-Select (Static Options) -> [{', '.join(multi_select_static or [])}]",
f"11: Multi-Select (From Input Columns) -> [{', '.join(multi_select_columns or [])}]"
]
return "\n".join(lines)
return concat_all_widgets(
expr_value,
text_input,
text_area,
checkbox_flag,
toggle_flag,
number_value,
slider_value,
select_static,
select_column,
multi_select_static,
multi_select_columns
)
$$
Paso 4: Probar la función
Pruebe la función UC directamente con SQL:
SELECT main.my_schema.all_widgets_demo(
'my_column_value', -- expr_value (expression)
'Hello World', -- text_input (input)
'Multi\nLine\nText', -- text_area (textarea)
TRUE, -- checkbox_flag (checkbox)
FALSE, -- toggle_flag (toggle)
42.5, -- number_value (number)
75.0, -- slider_value (slider)
'option_b', -- select_static (select with static)
'amount', -- select_column (select with inputColumns)
array('tag1', 'tag3'), -- multi_select_static (multi-select with static)
array('col1', 'col2', 'col3') -- multi_select_columns (multi-select with inputColumns)
) AS result;
Paso 5: Registrar el operador
Añada el operador a su archivo .user_defined_operators.yaml:
operators:
- catalog: main
schema: my_schema
functionName: all_widgets_demo
Paso 6: Configuración de permisos
Conceda acceso a los usuarios que necesitan usar este operador:
GRANT USE SCHEMA ON SCHEMA main.my_schema TO `<user>`;
GRANT EXECUTE ON FUNCTION main.my_schema.all_widgets_demo TO `<user>`;
Usar el operador en Lakeflow Designer
Una vez registrado, el operador aparecerá en Lakeflow Designer con un panel de configuración completo con:
- Selector de expresiones para la selección de columnas
- Entradas de texto (línea única y varias líneas)
- Controles booleanos (casilla de verificación e interruptor)
- Entradas numéricas (campo de número y control deslizante)
- Listas desplegables con opciones estáticas y dinámicas
- Controles de selección múltiple para elegir varios valores
Este operador sirve como referencia útil para comprender cómo cada tipo de widget representa y pasa datos a la función.
Resumen de referencia del widget
| Widget | Tipo de datos | Opciones de interfaz de usuario |
|---|---|---|
expression |
expression |
port (obligatorio), placeholder |
input |
string |
placeholder |
textarea |
string |
rows, placeholder |
checkbox |
boolean |
placeholder |
toggle |
boolean |
placeholder |
number |
number |
min, , max, placeholder |
slider |
number |
min, max, , step, placeholder |
select |
string |
optionsSource (obligatorio), placeholder |
multi-select |
string[] |
optionsSource (obligatorio), placeholder |