Kullanıcı tanımlı işleç YAML başvurusu

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-udtfveya python-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ızca python-run-function)
  • environment: Python ortamı ve bağımlılıkları (yalnızca python-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[]