Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm erstellen Sie einen Python UDF-Operator für Lakeflow Designer, der alle im user-defined-operator-v0.1.0 Schema verfügbaren UI-Widgets trainiert. Verwenden Sie sie beim Erstellen eigener Operatoren als Vorlage. Eine umfassendere Übersicht finden Sie unter User-defined operators in Lakeflow Designer.
Überblick
Dieser Operator ist eine Demonstrations-UDF, die Parameter mit jedem verfügbaren UI-Widget-Typ akzeptiert. Es verkettet alle Eingabewerte in eine beschreibende Zeichenfolge, sodass sie leicht erkennen kann, wie jedes Widget Daten an Ihre Funktion übergibt.
Die verfügbaren Widgettypen sind:
| Widget | Description | Datentyp |
|---|---|---|
expression |
Spalten-/Ausdrucksauswahl vom Eingabeport | expression |
input |
Einzeilige Texteingabe | string |
textarea |
Mehrzeiliger Textbereich | string |
checkbox |
Kontrollkästchen-Umschalter | Boolean |
toggle |
Umschalter | Boolean |
number |
Zahleneingabe mit min/max | number |
slider |
Numerischer Schieberegler mit Wertebereich | number |
select |
Dropdownmenü mit einzelner Auswahl (statische Werte) | string |
select |
Dropdownmenü mit einzelner Auswahl (aus Eingabespalten) | string |
multi-select |
Mehrfachauswahl (statische Werte) | string[] |
multi-select |
Mehrfachauswahl (aus Eingabespalten) | string[] |
Step 1: Schreiben und Testen der Python-Funktion
Definieren Sie zunächst die Python-Funktion, die alle verschiedenen Parametertypen akzeptiert. Diese Funktion verkettet einfach alle Eingaben in eine beschreibende Zeichenfolge zu Demonstrationszwecken.
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)
Testen Sie die Funktion mit dem folgenden 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)
Schritt 2: Erstellen der YAML-Konfiguration
Die YAML-Konfiguration definiert, wie der Operator im Lakeflow-Designer angezeigt wird. In diesem Beispiel wird jeder verfügbare Widgettyp veranschaulicht:
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
Schema-Highlights
| Konfigurationsschlüssel | Widget | Datentyp | Purpose |
|---|---|---|---|
expression_widget_value |
expression |
expression | Wählen Sie eine Spalte oder einen Ausdruck aus Eingabedaten aus. |
input_widget_value |
input |
string | Einzeilige Texteingabe. |
textarea_widget_value |
textarea |
string | Mehrzeilige Texteingabe. |
checkbox_widget_value |
checkbox |
Boolean | Boolescher Kontrollkästchen. |
toggle_widget_value |
toggle |
Boolean | Boolescher Umschalter. |
number_widget_value |
number |
number | Numerische Eingabe mit min/max. Überprüfung. |
slider_widget_value |
slider |
number | Numerischer Schieberegler mit Schritten. |
select_static_widget_value |
select |
string | Dropdown mit hartcodierten Optionen. |
select_columns_widget_value |
select |
string | Dropdown mit Werten aus Eingabespalten gefüllt. |
multiselect_static_widget_value |
multi-select |
string[] | Mehrfachauswahl mit fest codierten Optionen. |
multiselect_columns_widget_value |
multi-select |
string[] | Mehrfachauswahl mit Daten aus den Eingabespalten gefüllt. |
Optionsquellentypen
Für select und multi-select Widgets müssen Sie folgendes optionsSourceangeben:
Statische Optionen: Feste Werteliste:
optionsSource:
type: static
values:
- value1
- value2
- value3
Eingabespalten: Dynamische Liste aus Eingabeportspalten:
optionsSource:
type: inputColumns
port: in
Eine umfassende Anleitung zu allen verfügbaren Eigenschaften, Datentypen, Widgets und Optionen finden Sie in der YAML-Referenz für den benutzerdefinierten Operator .
Schritt 3: Erstellen der Unity-Katalogfunktion
Kombinieren Sie die YAML-Konfiguration und Python Funktion in einer einzelnen CREATE FUNCTION-Anweisung. Beachten Sie, dass string[] (Mehrfachauswahl)-Werte als ARRAY<STRING> an die UDF übergeben werden.
Das Beispiel erzeugt die Funktion in main.example_output. Erstelle zuerst das Schema, falls es nicht existiert:
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
)
$$
Schritt 4: Testen der Funktion
Testen Sie die UC-Funktion direkt mit 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;
Schritt 5: Registrieren des Operators
Fügen Sie den Operator Ihrer .user_defined_operators.yaml-Datei hinzu:
operators:
- catalog: main
schema: example_output
functionName: all_widgets_demo
Schritt 6: Einrichten von Berechtigungen
Gewähren Sie Zugriff auf Benutzer, die diesen Operator verwenden müssen:
GRANT USE SCHEMA ON SCHEMA main.example_output TO `<user>`;
GRANT EXECUTE ON FUNCTION main.example_output.all_widgets_demo TO `<user>`;
Verwenden Sie den Operator in Lakeflow Designer
Nach der Registrierung erscheint der Betreiber in Lakeflow Designer mit einem umfassenden Konfigurationsbereich mit:
- Ein Auswähler von Ausdrücken zur Spaltenauswahl
- Texteingaben (einzeilig und mehrzeilig)
- Boolesche Steuerelemente (Kontrollkästchen und Umschaltfläche)
- Numerische Eingaben (Zahlenfeld und Schieberegler)
- Dropdowns mit statischen und dynamischen Optionen
- Steuerelemente zur Mehrfachauswahl für die Auswahl mehrerer Werte
Dieser Operator dient als nützlicher Verweis, um zu verstehen, wie jeder Widgettyp Daten rendert und an Ihre Funktion übergibt.
Informationen zu den Datentypen und Optionen jedes Widgets finden Sie unter UI-Widgets.