Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, user-defined-operator-v0.1.0 şemasında kullanılabilen tüm kullanıcı arabirimi pencere öğelerini kullanan Lakeflow Designer için bir Python UDF operatörü oluşturacaksınız. Kendi işleçlerinizi oluştururken şablon olarak kullanın. Daha geniş bir genel bakış için bkz. Lakeflow Designer'da kullanıcı tanımlı işleçler.
Overview
Bu operatör, mevcut tüm UI bileşeni türlerini kullanarak parametre alan bir gösterim UDF’sidir. Tüm giriş değerlerini açıklayıcı bir dizede birleştirir ve her pencere öğesinin işlevinize nasıl veri geçtiğini görmeyi kolaylaştırır.
Kullanılabilir pencere öğesi türleri şunlardır:
| Widget | Description | Veri Türü |
|---|---|---|
expression |
Giriş bağlantı noktasından sütun/ifade seçici | expression |
input |
Tek satırlı metin girişi | string |
textarea |
Çok satırlı metin alanı | string |
checkbox |
Onay kutusu geçiş düğmesi | Boolean |
toggle |
Aç/kapat düğmesi | Boolean |
number |
Min/max ile sayı girişi | number |
slider |
Değer aralığı olan sayısal kaydırıcı | number |
select |
Tek seçimli açılır menü (statik değerler) | string |
select |
Girdi sütunlarından tekli seçim açılır menüsü | string |
multi-select |
Çoklu seçim (statik değerler) | string[] |
multi-select |
Çoklu seçim (giriş sütunlarından) | string[] |
1. Adım: Python işlevini yazma ve test edin
İlk olarak, tüm farklı parametre türlerini kabul eden Python işlevini tanımlayın. Bu işlev, gösterim amacıyla tüm girişleri açıklayıcı bir dizede birleştirir.
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)
İşlevi aşağıdaki kodla test edin:
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. Adım: YAML yapılandırmasını oluşturma
YAML yapılandırması, işlecin Lakeflow Designer'da nasıl görüneceğini tanımlar. Bu örnekte kullanılabilir tüm pencere öğesi türleri gösterilmektedir:
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
Şema vurguları
| Yapılandırma Anahtarı | Widget | Veri Türü | Purpose |
|---|---|---|---|
expression_widget_value |
expression |
expression | Giriş verilerinden bir sütun veya ifade seçin. |
input_widget_value |
input |
string | Tek satırlı metin girişi. |
textarea_widget_value |
textarea |
string | Çok satırlı metin girişi. |
checkbox_widget_value |
checkbox |
Boolean | Boole onay kutusu. |
toggle_widget_value |
toggle |
Boolean | İki durumlu geçiş anahtarı. |
number_widget_value |
number |
number | Minimum/maksimum doğrulama ile sayısal giriş. |
slider_widget_value |
slider |
number | Kademeli sayısal kaydırıcı. |
select_static_widget_value |
select |
string | Sabit kodlanmış seçenekler içeren açılan menü. |
select_columns_widget_value |
select |
string | Açılır liste girdi sütunlarından doldurulur. |
multiselect_static_widget_value |
multi-select |
string[] | Sabit kodlanmış seçeneklerle çoklu seçim yapın. |
multiselect_columns_widget_value |
multi-select |
string[] | Giriş sütunlarındaki verilerle doldurulan çoklu seçim alanı. |
Seçenekler kaynak türleri
select ve multi-select pencere öğeleri için bir optionsSource belirtmeniz gerekir:
Statik seçenekler: Sabit değer listesi:
optionsSource:
type: static
values:
- value1
- value2
- value3
Giriş sütunları: Giriş bağlantı noktası sütunlarından dinamik liste:
optionsSource:
type: inputColumns
port: in
Tüm kullanılabilir özelliklere, veri türlerine, pencere öğelerine ve seçeneklere yönelik kapsamlı bir kılavuz için kullanıcı tanımlı işleç YAML başvurusuna bakın.
3. Adım: Unity Kataloğu işlevini oluşturma
YAML yapılandırmasını ve Python işlevini tek bir CREATE FUNCTION deyiminde birleştirin.
string[] (çoklu seçim) değerlerinin UDF'ye ARRAY<STRING> olarak iletildiğini unutmayın.
Örnek, fonksiyonu main.example_output içinde oluşturur. Eğer şema yoksa, önce onu oluşturun:
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. Adım: İşlevi test edin
UC işlevini doğrudan SQL ile test edin:
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. Adım: İşleci kaydetme
İşleci .user_defined_operators.yaml dosyanıza ekleyin:
operators:
- catalog: main
schema: example_output
functionName: all_widgets_demo
6. Adım: İzinleri ayarlama
Bu işleci kullanması gereken kullanıcılara erişim izni verin:
GRANT USE SCHEMA ON SCHEMA main.example_output TO `<user>`;
GRANT EXECUTE ON FUNCTION main.example_output.all_widgets_demo TO `<user>`;
Lakeflow Designer'da operatörü kullanın
Operatör kaydedildikten sonra Lakeflow Designer'da görünür ve şunları içeren kapsamlı bir yapılandırma bölmesi vardır:
- Sütun seçimi için ifade seçici
- Metin girişleri (tek satırlı ve çok satırlı)
- Boole denetimleri (onay kutusu ve geçiş)
- Sayısal girişler (sayı alanı ve kaydırıcı)
- Hem statik hem de dinamik seçenekler içeren açılan menüler
- Birden çok değer seçmek için çoklu seçim denetimleri
Bu işleç, her pencere öğesi türünün nasıl görüntülendiğini ve verileri işlevinize nasıl aktardığını anlamak için yararlı bir başvuru kaynağıdır.
Her pencere öğesinin veri türü ve seçenekleri için bkz. Kullanıcı arabirimi pencere öğeleri.