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.
Lakeflow Designer'da kullanıcı tanımlı işleçler YAML'de tanımlanır. Tüm işleç türleri (uc-udf, uc-udtfve python-run-function) JSON Şema biçimini kullanarak yapılandırma alanlarını tanımlayan şemayı kullanır user-defined-operator-v0.1.0 .
Kullanıcı tanımlı işleçler oluşturma hakkında bilgi için bkz. Lakeflow Designer'da kullanıcı tanımlı işleçler.
Kök özellikler
Her işleç YAML dosyası, işlecini tanımlayan ve davranışını tanımlayan bir kök özellikler kümesiyle başlar. Aşağıdaki örnekte genel yapı gösterilmektedir:
schema: user-defined-operator-v0.1.0
type: python-run-function
name: My Operator
id: my_operator
version: '1.0.0'
description: >
What this operator does.
Can be multiple lines.
config:
type: object
properties:
my_field:
type: string
title: My Field
description: Help text
ports:
input:
- name: data
title: Input Data
output:
- name: out
title: Output
run_function:
type: inline
code: |
def run(config, inputs, spark):
return {"out": inputs["data"]}
environment:
environment_version: '4'
dependencies:
- 'pandas>=2.0'
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
schema |
string | Yes | Şema tanımlayıcısı. olmalıdır user-defined-operator-v0.1.0. |
type |
string | Yes | İşleç türü: uc-udf, uc-udtfveya python-run-function. |
name |
string | Yes | İşlecin görünen adı. Lakeflow Designer kullanıcı arabirimine sığması için kısa tutun. En az 1 karakter uzunluğunda. |
id |
string | Yes | İşleç türü için benzersiz tanımlayıcı. En az 1 karakter uzunluğunda. İşleçleri kategorilere ayırmak için ad alanlarını (veya finance.gibiml.) kullanmayı göz önünde bulundurun. |
description |
string | Yes | İşlecin ne yaptığının ayrıntılı açıklaması. Kullanıcı arabirimindeki kullanıcılara gösterilir. Daha uzun açıklamalar için YAML çok satırlı söz dizimlerini (>) kullanın. |
config |
Obje | Yes | Yapılandırma alanlarını tanımlayan JSON Schema nesnesi. Bkz . Yapılandırma. |
ports |
Obje | Hayır | Giriş ve çıkış bağlantı noktası tanımları. Bkz. Bağlantı noktaları. |
version |
string | Yes | Sürüm dizesi (örneğin, "1.0.0"). Kendi operatör yayınlarınızı izlemek için bunu kullanın. |
run_function |
Obje | Hayır |
python-run-function işleçleri için satır içi Python kodu. Bkz. run_function. |
environment |
Obje | Hayır | Bağımlılıklar dahil olmak üzere ortam yapılandırmasını Python. Bkz. environment. |
Limanlar
Bağlantı noktaları, operatörünüzün işlem hattındaki diğer işleçlere nasıl bağlanılacağını tanımlar.
ports nesnesi ve input dizilerini içeriroutput.
ports:
input:
- name: input_data
title: Input Data
mime: application/vnd.databricks.dataframe
allowMultiple: true
required: true
output:
- name: out
title: Output
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
name |
string | Yes | Bağlantı noktası için benzersiz tanımlayıcı. Bağlantılarda ve yapılandırma başvurularında kullanılır. |
title |
string | Hayır | Kullanıcı arabiriminde görüntülenen, okunabilir etiket. |
mime |
string | Hayır | Bağlantı noktası verileri için MIME türü. Örneğin, application/vnd.databricks.dataframe. |
allowMultiple |
boolean | Hayır | ise true, bağlantı noktası birden çok gelen bağlantıyı kabul eder.
falseVarsayılan olarak değerini kullanır; burada bağlantı noktası tek bir bağlantı kabul eder ve yeni bir kaynağın kablolarını bağlamak mevcut olanın yerini alır. |
required |
boolean | Hayır | ise false, bağlantı noktası isteğe bağlıdır. Varsayılan: true. |
Yalnızca belgelenen bağlantı noktası özellikleri kabul edilir. Bilinmeyen anahtarlar (eski label alan gibi) şema doğrulaması tarafından reddedilir.
Bağlantı noktası örnekleri
Giriş ve çıkış bağlantı noktalarına sahip UDF:
ports:
input:
- name: in
title: Input Data
output:
- name: out
title: Output
Giriş ve çıkış bağlantı noktalarıyla UDTF:
ports:
input:
- name: input_data
title: Input Data
output:
- name: clustered_data
title: Clustered Results
birden çok giriş ve isteğe bağlı bir bağlantı noktası ile python-run-function:
ports:
input:
- name: main_data
title: Main Data
- name: reference_data
title: Reference Table
required: false
output:
- name: joined_output
title: Joined Output
Config
Bu config alan bir JSON Şeması nesnesidir. Her yapılandırma alanını şema içinde bir özellik olarak tanımlarsınız. Bu biçim , , enumminimumve maximumgibi examplesstandart JSON Şeması doğrulama özelliklerine erişmenizi sağlar.
Nesnenin config ve bir type: object eşlemesi olmalıdırproperties. İsteğe bağlı olarak (gerekli özellik adları dizisi) ve requiredekleyebilirsiniz additionalProperties .
config:
type: object
properties:
cluster_count:
type: number
title: Number of Clusters
description: How many clusters to create
default: 3
minimum: 1
maximum: 100
algorithm:
type: string
title: Algorithm
description: Clustering algorithm to use
enum: ['kmeans', 'dbscan', 'hierarchical']
default: kmeans
feature_col:
type: string
title: Feature Column
description: Column to use as input
format: expression
x-ui:
widget: expression
port: data
required: [cluster_count, feature_col]
additionalProperties: false
Yapılandırma özelliği alanları
nesnesindeki config.properties her özellik aşağıdaki standart JSON Şeması alanlarını destekler:
| Veri Alanı | Türü | Description |
|---|---|---|
type |
string | Veri türü: string, number, integer, boolean, , arrayveya object. |
title |
string | Kullanıcı arabiriminde görüntülenen, okunabilir etiket. |
description |
string | Kullanıcılara gösterilen yardım metni. |
default |
any | Alan için varsayılan değer. |
examples |
Dizi | Alan için örnek değerler. |
enum |
Dizi | İzin verilen değerlerin listesi düzeltildi. |
format |
string | Anlamsal tür ipucu. Bkz . Değerleri biçimlendirme. |
minimum |
number | İzin verilen en düşük değer (ve number türleri içininteger). |
maximum |
number | İzin verilen en büyük değer (ve number türleri içininteger). |
items |
Obje | Dizi öğeleri için şema (olduğunda typearray). |
properties |
Obje | İç içe özellik tanımları (olduğunda typeobject). |
required |
Dizi | Gerekli iç içe özellik adlarının listesi (olduğunda typeobject). |
, minLength, maxLengthve pattern gibi constdiğer standart JSON Şeması alanları da desteklenir.
Değerleri biçimlendirme
format Yapılandırma özelliğindeki alan, Lakeflow Designer'a değerin nasıl yorumlandığını bildiren bir anlamsal tür ipucu sağlar. Bu ipuçları özel kullanıcı arabirimi davranışını ve doğrulamasını sağlar.
| Format | Description |
|---|---|
expression |
Sütun başvurusu veya SQL ifadesi. |
table_source |
Tablo kaynağı başvurusu. |
file_source |
Dosya kaynağı başvurusu. |
column_expressions |
Sütun ifadeleri. |
sort_expressions |
İfadeleri sırala |
aggregation_expressions |
Toplama ifadeleri. |
ai_function_expressions |
AI işlev ifadeleri. |
is_preview |
Otomatik önizleme modu bayrağı. Lakeflow Designer, iş akışı önizlemesi sırasında bunu olarak true ayarlar. Yapılandırma özelliği adı rastgeledir; format: is_preview yalnızca etiket önemlidir. Önizleme sırasında dış API çağrıları gibi yan etkileri atlamak için bunu kullanın. |
string[] |
Dize dizisi. |
Kullanıcı arabirimi pencere öğeleri
Pencere öğeleri, bir yapılandırma alanının Lakeflow Designer arabiriminde nasıl işlenme şeklini özelleştirir. Her yapılandırma özelliğinde özelliğinde x-ui pencere öğeleri tanımlayın. Pencere öğesini atlarsanız, Lakeflow Designer veri türüne göre varsayılan bir pencere öğesi kullanır.
| Widget | Veri türü | Description |
|---|---|---|
input |
string | Tek satırlı metin girişi. |
textarea |
string | Çok satırlı metin alanı. İsteğe bağlı rows özelliği destekler. |
checkbox |
boolean | Standart onay kutusu. |
toggle |
boolean | Geçiş anahtarı. |
number |
sayı/tamsayı | İsteğe bağlı kısıtlamaları olan sayısal giriş. |
slider |
sayı/tamsayı | Sayısal aralıklar için görsel kaydırıcı. İsteğe bağlı step özelliği destekler. |
select |
string | Tek seçim açılan menüsü. gerektirir optionsSource. |
multi-select |
Dizi | Çoklu seçim açılan menüsü. gerektirir optionsSource. |
expression |
string | Sütun/ifade seçici. gerektirir port. |
input
Tek satırlı metin giriş alanı.
api_endpoint:
type: string
title: API Endpoint
x-ui:
widget: input
textarea
Daha uzun içerik için çok satırlı metin alanı. Yüksekliği denetlemek için isteğe bağlı rows bir özelliği destekler.
message_body:
type: string
title: Message Body
x-ui:
widget: textarea
rows: 4
checkbox
Boole değerleri için standart onay kutusu.
send_notification:
type: boolean
title: Send Notification
default: false
x-ui:
widget: checkbox
toggle
Boole değerleri için geçiş anahtarı.
enable_logging:
type: boolean
title: Enable Logging
default: true
x-ui:
widget: toggle
number
Sayısal giriş alanı. Aralığı kısıtlamak için özelliğin kendisinde ve minimum kullanınmaximum.
num_clusters:
type: number
title: Number of Clusters
default: 3
minimum: 1
maximum: 100
x-ui:
widget: number
slider
Aralık içindeki sayısal değerleri seçmek için görsel kaydırıcı. Aralığı ayarlamak için ve minimum özelliğinde ve maximum artımını denetlemek için içinde step kullanınx-ui.
confidence_threshold:
type: number
title: Confidence Threshold
default: 0.8
minimum: 0
maximum: 1
x-ui:
widget: slider
step: 0.05
select
Tek seçim açılan menüsü. Açılan liste değerlerinin nereden geldiğini tanımlamak için bir optionsSource gerektirir. Bkz . Seçenekler kaynakları.
aggregation_type:
type: string
title: Aggregation Type
x-ui:
widget: select
optionsSource:
type: static
values: ['sum', 'avg', 'min', 'max', 'count']
multi-select
Birden çok değer seçmek için çoklu seçim açılan menüsü. özelliğinde ile type: array kullanınitems: { type: string }. bir optionsSourcegerektirir. Bkz . Seçenekler kaynakları.
feature_columns:
type: array
title: Feature Columns
items:
type: string
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: input_data
expression
Kullanıcıların giriş verilerinden bir sütun seçmelerine veya özel bir SQL ifadesi yazmasına olanak tanıyan sütun/ifade seçici. özelliğinde ayarlayın format: expression ve içindeki portgirişi x-ui belirtin. Bu yararlı olacaktır:
- Kullanıcının giriş verilerinden bir sütun seçmesi gerektiğinde.
- Kullanıcı özel bir SQL ifadesi yazmak istediğinde.
- İşlem hattındaki dinamik verilere başvuran parametreler için.
amount:
type: string
title: Amount
format: expression
x-ui:
widget: expression
port: input_data
Seçenekler kaynakları
ve select pencere öğeleri içinmulti-select, kullanarak optionsSourceaçılan seçeneklerin nereden geldiğini tanımlamanız gerekir. İki kaynak vardır: static (YAML'de tanımlanan sabit bir liste) ve inputColumns (giriş bağlantı noktasından sütun adları).
Statik seçenekler
YAML'de tanımlanan değerlerin sabit listesi.
optionsSource:
type: static
values: ['option1', 'option2', 'option3']
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
type |
string | Yes | olmalıdır static. |
values |
Dizi | Yes | Açılan menü için dize değerleri dizisi. |
Giriş sütunları
Açılan listeyi bir giriş bağlantı noktasından sütun adlarıyla dinamik olarak doldurur.
optionsSource:
type: inputColumns
port: input_data
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
type |
string | Yes | olmalıdır inputColumns. |
port |
string | Yes | Sütun adlarını almak için giriş bağlantı noktasının adı. Tanımlı giriş bağlantı noktalarınızdan biriyle eşleşmelidir name . |
run_function
run_function özelliği, Python kodu doğrudan python-run-function işleçleri için YAML yapılandırmasına eklemenizi sağlar. Bu, ayrı bir Unity Kataloğu işlevini kaydetme gereksinimini ortadan kaldırır.
run_function:
type: inline
code: |
def run(config, inputs, spark):
df = inputs["data"]
threshold = config["threshold"]
return {"out": df.filter(df["score"] > threshold)}
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
type |
string | Yes | olmalıdır inline. |
code |
string | Yes | Kaynak kodu Python. İşlev run() tanımlamanız gerekir. |
run() işlevi üç bağımsız değişken alır:
-
config: Kullanıcı tarafından kullanıcı arabiriminde ayarlanan yapılandırma değerlerinin sözlüğü. -
inputs: Giriş bağlantı noktası adlarını DataFrame'lere eşler. -
spark: Etkin SparkSession.
İşlev, bir sözlük eşleme çıkış bağlantı noktası adlarını DataFrames'e döndürmelidir. Anahtarlar, içinde tanımlanan her çıkış bağlantı noktasının alanıyla nametam olarak eşleşmelidirports.output. Örneğin, adlı outbir çıkış bağlantı noktası ile:
return {"out": result_df}
Birden çok çıkış bağlantı noktası ile:
return {"match": match_df, "rest": rest_df}
environment
environment özelliği, python-run-function işleçleri için Python ortamını belirtir. Ortam sürümünü sabitlemek ve pip bağımlılıklarını bildirmek için kullanın.
environment:
environment_version: '4'
dependencies:
- 'scikit-learn>=1.3'
- 'pandas>=2.0'
| Mülkiyet | Türü | Zorunlu | Description |
|---|---|---|---|
environment_version |
string | Hayır | Temel Python çalışma zamanını ve önceden yüklenmiş kitaplıkları ayarlayan sunucusuz ortam sürümü. Kullanılabilir sürümler için bkz. Sunucusuz ortam sürümleri. Örneğin, "4". |
dependencies |
stringler dizisi | Hayır | Pip bağımlılık tanımlayıcılarının listesi. Her girdi standart pip söz dizimine (örneğin, "pandas>=2.0") uyar. |
Tam örnekler
UC tabanlı UDF
Bu örnek, bileşik faizi hesaplayan Unity Kataloğu tabanlı UDF işlecini tanımlar.
schema: user-defined-operator-v0.1.0
type: uc-udf
name: Compound Interest
id: finance.compound_interest
version: '1.0.0'
description: >
Calculates compound interest based on principal, rate, and time period.
config:
type: object
properties:
principal:
type: string
title: Principal Amount
format: expression
x-ui:
widget: expression
port: input_data
annual_rate:
type: number
title: Annual Interest Rate
default: 5.0
minimum: 0
maximum: 100
x-ui:
widget: number
years:
type: number
title: Number of Years
default: 10
minimum: 1
maximum: 50
x-ui:
widget: slider
step: 1
compound_frequency:
type: string
title: Compounding Frequency
default: 'monthly'
x-ui:
widget: select
optionsSource:
type: static
values: ['daily', 'monthly', 'quarterly', 'annually']
required: [principal, annual_rate]
additionalProperties: false
ports:
input:
- name: input_data
title: Input Data
output:
- name: out
title: Output
run-function işlecini Python
Bu örnek, K-Ortalamalar kümelemini kullanarak müşterileri segmentlere bölen bir python-run-function işleç tanımlar.
schema: user-defined-operator-v0.1.0
type: python-run-function
name: Customer Segmentation
id: ml.customer_segmentation
version: '1.2.0'
description: >
Segments customers into groups based on selected features
using K-Means clustering. Returns customer IDs with their
assigned segment numbers.
config:
type: object
properties:
num_segments:
type: integer
title: Number of Segments
description: How many customer segments to create
default: 3
minimum: 2
maximum: 20
x-ui:
widget: number
customer_id_column:
type: string
title: Customer ID Column
description: Column containing customer identifiers
x-ui:
widget: select
optionsSource:
type: inputColumns
port: customer_data
feature_columns:
type: array
title: Feature Columns
description: Columns to use for segmentation
items:
type: string
x-ui:
widget: multi-select
optionsSource:
type: inputColumns
port: customer_data
normalize_features:
type: boolean
title: Normalize Features
description: Whether to normalize feature values before clustering
default: true
x-ui:
widget: toggle
required: [num_segments, customer_id_column, feature_columns]
additionalProperties: false
ports:
input:
- name: customer_data
title: Customer Data
mime: application/vnd.databricks.dataframe
output:
- name: segmented_customers
title: Segmented Customers
run_function:
type: inline
code: |
def run(config, inputs, spark):
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.ml.clustering import KMeans
df = inputs["customer_data"]
id_col = config["customer_id_column"]
features = config["feature_columns"]
k = config["num_segments"]
normalize = config.get("normalize_features", True)
assembler = VectorAssembler(inputCols=features, outputCol="features_vec")
assembled = assembler.transform(df)
if normalize:
scaler = StandardScaler(inputCol="features_vec", outputCol="scaled_features")
model = scaler.fit(assembled)
assembled = model.transform(assembled)
feature_col = "scaled_features"
else:
feature_col = "features_vec"
kmeans = KMeans(k=k, featuresCol=feature_col, predictionCol="segment")
result = kmeans.fit(assembled).transform(assembled)
return {"segmented_customers": result.select(id_col, "segment")}
environment:
environment_version: '4'
dependencies:
- 'scikit-learn>=1.3'
Hızlı referans
Gerekli kök özellikler
-
schema:user-defined-operator-v0.1.0 -
name: Görünen ad -
id: Benzersiz tanımlayıcı -
description: İşleç ne yapar? -
config: JSON Schema nesnesi -
type:uc-udf,uc-udtfveyapython-run-function -
version: Yazar tanımlı sürüm dizesi
İsteğe bağlı kök özellikler
-
ports: Giriş ve çıkış bağlantı noktası tanımları -
run_function: Satır içi Python kodu (yalnızcapython-run-function) -
environment: Python ortamı ve bağımlılıkları (yalnızcapython-run-function)
Yapılandırma özelliği veri türleri
string | boolean | number | integer | array | object
Kullanıcı arabirimi pencere öğeleri
input | textarea | checkbox | toggle | number | slider | select | multi-select | expression
Seçenekler kaynakları
static (sabit değerler) | inputColumns (giriş bağlantı noktasından)
Değerleri biçimlendirme
expression | table_source | file_source | column_expressions | sort_expressions | aggregation_expressions | ai_function_expressions | is_preview | string[]