Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Visualização Pública.
Este tutorial de referência cria um operador Python UDF para o Lakeflow Designer que exerce todos os widgets de interface do usuário disponíveis no esquema user-defined-operator-v0.1.0. Use-o como modelo ao criar seus próprios operadores. Para obter uma visão geral mais ampla, consulte operadores definidos pelo usuário no Lakeflow Designer.
Visão geral
Esse operador é uma UDF de demonstração que aceita parâmetros usando todos os tipos de widget de interface do usuário disponíveis. Ele concatena todos os valores de entrada em uma cadeia de caracteres descritiva, facilitando a visualização de como cada widget passa dados para sua função.
Os tipos de widget disponíveis são:
| Widget | Description | Tipo de dados |
|---|---|---|
expression |
Seletor de colunas/expressões na porta de entrada | expressão |
input |
Entrada de texto de linha única | cadeia |
textarea |
Área de texto de várias linhas | cadeia |
checkbox |
Alternador de caixa de seleção | booleano |
toggle |
Botão de alternância | booleano |
number |
Entrada numérica com mínimo/máximo | number |
slider |
Controle deslizante numérico com intervalo | number |
select |
Lista suspensa de seleção única (valores estáticos) | cadeia |
select |
Lista suspensa de seleção única (a partir das colunas de entrada) | cadeia |
multi-select |
Seleção múltipla (valores estáticos) | string[] |
multi-select |
Seleção múltipla (de colunas de entrada) | string[] |
Step 1: gravar e testar a função Python
Primeiro, defina a função Python que aceita todos os diferentes tipos de parâmetro. Essa função simplesmente concatena todas as entradas em uma cadeia de caracteres descritiva para fins de demonstração.
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)
Teste a função com o seguinte código:
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)
Etapa 2: Criar a configuração do YAML
A configuração yaml define como o operador aparece no Lakeflow Designer. Este exemplo demonstra todos os tipos de widget disponíveis:
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
Destaques do esquema
| Chave de configuração | Widget | Tipo de dados | Purpose |
|---|---|---|---|
expr_value |
expression |
expressão | Escolha uma coluna ou expressão de dados de entrada. |
text_input |
input |
cadeia | Entrada de texto de linha única. |
text_area |
textarea |
cadeia | Entrada de texto de várias linhas. |
checkbox_flag |
checkbox |
booleano | Caixa de seleção booliana. |
toggle_flag |
toggle |
booleano | Chave de alternância booleana. |
number_value |
number |
number | Entrada numérica com validação mínima/máxima. |
slider_value |
slider |
number | Controle deslizante numérico com incrementos em etapas. |
select_static |
select |
cadeia | Lista suspensa com opções codificadas. |
select_column |
select |
cadeia | Lista suspensa preenchida a partir das colunas de entrada. |
multi_select_static |
multi-select |
string[] | Seleção múltipla com opções codificadas. |
multi_select_columns |
multi-select |
string[] | Seleção múltipla preenchida a partir das colunas de entrada. |
Tipos de origem de opções
Para select e multi-select widgets, você deve especificar um optionsSource:
Opções estáticas – lista fixa de valores:
optionsSource:
type: static
values:
- value1
- value2
- value3
Colunas de entrada — lista dinâmica de colunas de porta de entrada:
optionsSource:
type: inputColumns
port: in
Consulte a referência YAML do operador definido pelo usuário para obter um guia abrangente sobre todas as propriedades, tipos de dados, widgets e opções disponíveis.
Etapa 3: Criar a função catálogo do Unity
Combine a configuração YAML e a função Python em uma única instrução CREATE FUNCTION. Observe que os valores de string[] (seleção múltipla) são passados como ARRAY<STRING> para a 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
)
$$
Etapa 4: Testar a função
Teste a função UC diretamente com o 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;
Etapa 5: Registrar o operador
Adicione o operador ao seu .user_defined_operators.yaml arquivo:
operators:
- catalog: main
schema: my_schema
functionName: all_widgets_demo
Etapa 6: Configurar permissões
Conceda acesso aos usuários que precisam 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>`;
Usando o operador no Lakeflow Designer
Depois de registrado, o operador aparecerá no Lakeflow Designer com um painel de configuração abrangente com:
- Um seletor de expressão para seleção de coluna
- Entradas de texto (linha única e várias linhas)
- Controles booleanos (caixa de seleção e botão de alternância)
- Entradas numéricas (campo de número e controle deslizante)
- Listas suspensas com opções estáticas e dinâmicas
- Controles de seleção múltipla para escolher vários valores
Esse operador serve como uma referência útil para entender como cada tipo de widget renderiza e passa dados para sua função.
Resumo da referência do widget
| Widget | Tipo de dados | Opções de interface do usuário |
|---|---|---|
expression |
expression |
port (obrigatório), placeholder |
input |
string |
placeholder |
textarea |
string |
rows, placeholder |
checkbox |
boolean |
placeholder |
toggle |
boolean |
placeholder |
number |
number |
min, max, placeholder |
slider |
number |
min, max, , stepplaceholder |
select |
string |
optionsSource (obrigatório), placeholder |
multi-select |
string[] |
optionsSource (obrigatório), placeholder |