Materialisasi Tampilan Fitur

Penting

Fitur ini ada di Pratinjau Umum. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola Pratinjau Azure Databricks.

Setelah membuat definisi Tampilan Fitur, yang disimpan di Katalog Unity, Anda dapat menghasilkan data fitur dari tabel sumber Anda menggunakan definisi fitur. Proses ini disebut mewujudkan fitur Anda. Azure Databricks membuat dan mengelola alur Lakeflow untuk mengisi tabel di Unity Catalog untuk pelatihan model dan penilaian batch atau penyajian online.

Untuk informasi tentang menyajikan Tampilan Fitur, lihat Menyajikan Tampilan Fitur.

Persyaratan

  • Fitur harus dibuat sebagai Tampilan Fitur dan disimpan di Katalog Unity.
  • Untuk persyaratan versi, lihat Persyaratan.
  • ColumnSelection fitur dapat direalisasikan ke toko online. Lihat Materialisasi Pilihan Kolom.
  • RequestSource fitur ini tidak dapat dimaterialisasi karena mewakili data yang disediakan saat waktu inferensi.

Permissions

Materialisasi berkaitan dengan hak istimewa Unity Catalog MANAGE dan READ FEATURE pada fitur ini. Untuk deskripsi hak istimewa lengkap, lihat FITUR BACA.

  • Mewujudkan fitur memerlukan MANAGE. Memanggil materialize_features atau delete_materialized_feature membuat dan mengelola alur Lakeflow backing dan tabel Unity Catalog, sehingga merupakan operasi manajemen. Anda harus memiliki MANAGE pada fitur tersebut, serta READ FEATURE untuk membaca definisi fitur yang dimaterialisasi.
  • Membaca data termaterialisasi memerlukan READ FEATURE. READ FEATURE pada fitur ini memberikan akses ke tabel offline dan online yang mendukungnya, sehingga Anda dapat menggunakan data terwujud untuk pelatihan dan penyajian model. list_materialized_features juga memerlukan READ FEATURE.

Seperti halnya objek Katalog Unity apa pun, Anda juga perlu USE CATALOG pada katalog induk dan USE SCHEMA pada skema induk. READ FEATURE dan MANAGE diberikan pada skema atau katalog berlaku untuk semua fitur saat ini dan di masa mendatang yang dikandungnya.

Struktur data API

OfflineStoreConfig

Konfigurasi untuk penyimpanan offline tempat fitur materialisasi akan ditulis. Ketika materialize_features dipanggil, backend penyimpanan fitur membuat tabel menggunakan awalan ini. Setiap eksekusi alur mewujudkan nilai fitur terbaru ke tabel sesuai dengan jadwal materialisasi.

OfflineStoreConfig(
    catalog_name: str,        # Catalog name for the offline table where materialized features will be stored
    schema_name: str,         # Schema name for the offline table
    table_name_prefix: str    # Table name prefix for the offline table. The pipeline may create multiple tables with this prefix, each updated at different cadences
)
from databricks.feature_engineering.entities import OfflineStoreConfig

offline_store = OfflineStoreConfig(
    catalog_name="main",
    schema_name="feature_store",
    table_name_prefix="customer_features"
)

OnlineStoreConfig

Konfigurasi untuk toko online, yang menyimpan fitur yang digunakan oleh penyajian model. Materialisasi membuat tabel Delta dengan catalog.schema.table_name_prefix, dan menyalurkan tabel ke Penyimpanan Fitur Online dengan nama yang sama.

from databricks.feature_engineering.entities import OnlineStoreConfig

online_store = OnlineStoreConfig(
    catalog_name="main",
    schema_name="feature_store",
    table_name_prefix="customer_features_serving",
    online_store_name="customer_features_store"
)

MaterializedFeature

Mewakili Tampilan Fitur yang telah dimaterialisasi, yaitu memiliki representasi yang telah diprakomputasi dan tersedia di Unity Catalog. Ada fitur materialisasi terpisah untuk tabel offline dan tabel online. Biasanya, pengguna tidak akan menginstansiasi MaterializedFeature secara langsung.

Panggilan fungsi API

materialize_features()

Mematerialisasikan daftar Feature View menjadi tabel Delta offline atau ke Feature Store online. Fitur harus terdaftar di Katalog Unity sebelum memanggil fungsi ini (misalnya, menggunakan create_feature atau register_feature). Fitur yang dibangun secara lokal yang belum terdaftar tidak akan berfungsi.

FeatureEngineeringClient.materialize_features(
    features: List[Feature],                                               # List of Feature Views to materialize
    offline_config: Optional[OfflineStoreConfig] = None,                   # Offline store config (aggregation features only)
    online_config: Optional[OnlineStoreConfig] = None,                     # Online store config
    trigger: Union[CronSchedule, TableTrigger, StreamingMode],              # Materialization trigger
) -> List[MaterializedFeature]:

Metode ini mengembalikan daftar fitur yang diwujudkan, yang berisi metadata tentang waktu pembaruan nilai fitur dan tabel dalam Unity Catalog tempat fitur diwujudkan.

Jika sebuah OnlineStoreConfig dan sebuah OfflineStoreConfig disediakan, maka dua fitur yang terwujud akan dikembalikan untuk setiap fitur yang disediakan, satu untuk setiap jenis penyimpanan.

Parameter trigger mengontrol kapan alur materialisasi berjalan:

  • CronSchedule: Berjalan pada jadwal tetap. Didukung untuk fitur agregasi batch (AggregationFunction dari DeltaTableSource).
  • TableTrigger: Berjalan ketika tabel Delta terhulu menerima komit. Didukung pada fitur ColumnSelection dan fitur agregasi (AggregationFunction) yang didukung oleh sumber data DeltaTableSource. Untuk fitur agregasi, pipeline dibatasi lajunya agar berjalan paling banyak satu kali dalam setiap setengah dari panjang jendela fitur. Misalnya, paling banyak sekali setiap 30 menit selama jendela waktu 1 jam, tapi tidak pernah lebih dari setiap 5 menit.
  • StreamingMode: Berjalan sebagai alur streaming berkelanjutan. Diperlukan untuk fitur yang didukung oleh StreamSource.

Anda tidak dapat mencampur fitur yang memerlukan jenis pemicu yang berbeda dalam satu materialize_features panggilan. Lakukan panggilan terpisah sebagai gantinya.

Materialisasi ke penyimpanan offline

from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
    CronSchedule, OfflineStoreConfig,
)

fe = FeatureEngineeringClient()

materialized = fe.materialize_features(
    features=features,
    offline_config=OfflineStoreConfig(
        catalog_name="main",
        schema_name="feature_store",
        table_name_prefix="customer_features"
    ),
    trigger=CronSchedule(
        quartz_cron_expression="0 0 * * * ?",  # Hourly
        timezone_id="UTC",
    ),
)

Mengimplementasikan menjadi toko online

Nota

Untuk merealisasikan fitur agregasi ke toko online, Anda juga harus mengimplementasikannya di toko offline. Keduanya offline_config dan online_config diperlukan. online_store_name harus merujuk kepada Toko Fitur Online yang sudah ada. Untuk petunjuk untuk membuat satu, lihat Penyimpanan Fitur Online Databricks.

ColumnSelection fitur tidak memerlukan OfflineStoreConfig. Lihat Materialisasi Pilihan Kolom.

from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
    CronSchedule, OfflineStoreConfig, OnlineStoreConfig,
)

fe = FeatureEngineeringClient()

materialized = fe.materialize_features(
    features=features,
    offline_config=OfflineStoreConfig(
        catalog_name="main",
        schema_name="feature_store",
        table_name_prefix="customer_features"
    ),
    online_config=OnlineStoreConfig(
        catalog_name="main",
        schema_name="feature_store",
        table_name_prefix="customer_features_serving",
        online_store_name="customer_features_store"
    ),
    trigger=CronSchedule(
        quartz_cron_expression="0 0 * * * ?",  # Hourly
        timezone_id="UTC",
    ),
)

Mewujudkan fitur streaming

Fitur streaming hanya dapat diwujudkan ke toko online; offline_config parameter tidak didukung. Materialisasi offline tidak didukung karena fitur streaming memerlukan pipeline real-time untuk memastikan kesegaran data dalam hitungan kurang dari satu detik. Untuk pelatihan atau evaluasi offline, klien rekayasa fitur akan mengolah ulang nilai fitur berdasarkan setiap titik data yang dievaluasi.

Fitur streaming tidak dapat dicampur dengan fitur batch dalam panggilan yang sama materialize_features .

from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
    OnlineStoreConfig, StreamingMode,
)

fe = FeatureEngineeringClient()

materialized = fe.materialize_features(
    features=[streaming_feature],
    online_config=OnlineStoreConfig(
        catalog_name="my_catalog",
        schema_name="my_schema",
        table_name_prefix="streaming_features_serving",
        online_store_name="feature_store_online"
    ),
    trigger=StreamingMode(),
)

list_materialized_features()

Mengembalikan materialisasi dari satu fitur, yang diidentifikasi berdasarkan nama lengkapnya. feature_name wajib dan hanya dapat digunakan sebagai argumen kata kunci. Untuk meninjau materialisasi di banyak fitur, pertama-tama cantumkan fitur dalam katalog atau skema, lalu panggil list_materialized_features pada setiap fitur yang dikembalikan.

Secara default, maksimum 100 materialisasi dikembalikan. Anda dapat mengubah batas ini menggunakan max_results parameter .

FeatureEngineeringClient.list_materialized_features(
    *,                                      # Arguments are keyword-only
    feature_name: str,                      # Required: full name of the feature whose materializations to list
    max_results: int = 100,                 # Maximum number of materializations to return
) -> List[MaterializedFeature]:

delete_materialized_feature()

Sebelum menghapus fitur yang dimaterialisasikan, hapus atau perbarui model atau spesifikasi fitur apa pun yang merujuk pada fitur tersebut.

Menghapus fitur materialisasi. Fitur yang akan diteruskan tergantung pada jenis fitur:

  • Fitur agregasi: Pindahkan fitur yang telah dimaterialisasi offline. Jika ada fitur yang dilaksanakan secara online untuk fitur tersebut, maka keduanya akan dihapus.
  • ColumnSelection fitur: Sampaikan fitur terwujud secara online. ColumnSelection fitur diimplementasikan khusus untuk toko online (lihat proses materialisasi ColumnSelection), sehingga tidak ada fitur offline yang dipasangkan.

Sebagai bagian dari materialisasi, fitur dikelompokkan bersama berdasarkan sumber data dan jendela agregasi untuk efisiensi. ColumnSelection fitur tidak memiliki jendela agregasi, sehingga hanya dikelompokkan menurut sumber data. Alur materialisasi, tabel offline, dan tabel online tidak dihapus hingga semua fitur yang dikelompokkan telah dihapus. Ketika fitur yang dimaterialisasi terakhir dalam suatu grup dihapus, feature store menjadwalkan pembersihan otomatis sumber daya terkait melalui proses latar belakang. Lihat Pembersihan sumber daya latar belakang.

Untuk menghapus fitur yang terwujud, lihat tabel yang terkait dengan fitur tersebut. Setiap fitur dalam tabel (satu per kolom) harus dihapus sebelum sumber daya tabel komputasi dan Delta dibersihkan.

Gunakan list_materialized_features() untuk mendapatkan materialized_feature argumen.

FeatureEngineeringClient.delete_materialized_feature(
    materialized_feature: MaterializedFeature,  # Required: The materialized feature to delete
) -> None
from databricks.feature_engineering import FeatureEngineeringClient

fe = FeatureEngineeringClient()

feature_names = [
    "main.feature_store.amount_sum_sliding_7d_1d",
    "main.feature_store.amount_sum_sliding_30d_1d",
    "main.feature_store.transaction_count_sliding_7d_1d",
    "main.feature_store.latest_transaction_amount",
    "main.feature_store.latest_user_tier",
]

for name in feature_names:
    mfs = fe.list_materialized_features(feature_name=name)   # required, keyword-only
    offline = [mf for mf in mfs if not mf.is_online]
    for mf in (offline or mfs):
        fe.delete_materialized_feature(materialized_feature=mf)
    fe.delete_feature(full_name=name)

Materialisasi "ColumnSelection"

ColumnSelection fitur memungkinkan pemilihan nilai terbaru dari satu kolom per kunci entitas tanpa proses agregasi. Mereka hanya dapat diwujudkan di toko online. Untuk kasus penggunaan offline (pelatihan dan pemodelan batch), ColumnSelection fitur diambil langsung dari sumber data saat permintaan data, sehingga materialisasi offline tidak diperlukan.

Perilaku materialisasi

  • Alur menulis baris terbaru per kunci entitas ke tabel online, tanpa jendela agregasi.
  • Materialisasi online mengisi tabel online dengan nilai terbaru saat ini per kunci entitas.

Example

from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import (
    DeltaTableSource, Feature, ColumnSelection, TableTrigger, OnlineStoreConfig,
)

fe = FeatureEngineeringClient()

delta_source = DeltaTableSource(
    catalog_name="catalog",
    schema_name="schema",
    table_name="transactions",
)

amount_feature = Feature(
    source=delta_source,
    function=ColumnSelection("amount"),
    entity=["user_id"],
    timeseries_column="transaction_time",
    name="latest_transaction_amount",
)

# Register before materializing
amount_feature = fe.register_feature(
    feature=amount_feature,
    catalog_name="catalog",
    schema_name="schema",
)

mfs = fe.materialize_features(
    features=[amount_feature],
    online_config=OnlineStoreConfig(
        catalog_name="catalog",
        schema_name="feats_online",
        table_name_prefix="txn_",
        online_store_name="lb_usw2"
    ),
    trigger=TableTrigger(),
)

ColumnSelection fitur menggunakan TableTrigger, yang menjalankan alur setiap kali tabel Delta sumber menerima penerapan baru. offline_config tidak diperlukan karena fitur ColumnSelection dibaca langsung dari sumber untuk kasus penggunaan offline (pelatihan dan inferensi batch).

Nota

RequestSource fitur tidak dapat dimaterialkan karena mewakili data yang diberikan oleh pemanggil pada waktu inferensi (atau diekstrak dari DataFrame berlabel pada waktu pelatihan). Tidak ada tabel sumber untuk dibaca. Nilai-nilai tersebut hanya ada dalam payload permintaan atau DataFrame pelatihan.

Pembersihan sumber daya latar belakang

Saat Anda menghapus fitur termaterialisasi, Databricks segera menghapus metadata fitur tersebut. Infrastruktur terkait (tabel, alur, dan pekerjaan) dibersihkan secara asinkron oleh proses latar belakang.

Karena beberapa fitur termaterialisasi dapat berbagi tabel dan pipeline yang sama, sumber daya bersama ini tidak akan dihapus sampai semua fitur termaterialisasi yang merujuk ke sumber daya tersebut telah dihapus. Saat fitur terwujud terakhir yang berbagi sekumpulan tabel dihapus, proses latar belakang secara otomatis menghapus sumber daya berikut:

  • Tabel Delta offline yang berisi data fitur yang dimaterialisasi
  • Tabel online, jika fitur diwujudkan ke toko online
  • Alur materialisasi
  • Pekerjaan orkestrasi

Proses latar belakang ini menggunakan perwakilan layanan sistem yang dikelola Databricks untuk melakukan tindakan pembersihan ini atas nama Anda, termasuk menghapus tabel, alur, dan pekerjaan di ruang kerja Anda. Anda tidak perlu melakukan tindakan apa pun. Pembersihan sepenuhnya dikelola oleh feature store.

Nota

Mungkin ada penundaan singkat antara menghapus fitur terwujud terakhir dalam grup dan penghapusan tabel terkait dan sumber daya lainnya.

Lihat status materialisasi

Untuk melihat status materialisasi Tampilan Fitur Anda di UI Databricks serta men-debug error materialisasi, lihat Jelajahi Tampilan Fitur di Unity Catalog.

Keterbatasan

Fitur pemrosesan batch

  • Alur materialisasi batch berjalan sebagai alur Lakeflow tanpa server.
  • Fitur jendela bergulir batch tidak dapat diimplementasikan. Karena keakuratan waktu yang tinggi, fitur jendela berguling untuk pelatihan offline atau inferensi batch dihasilkan secara instan untuk setiap titik data.
  • ColumnSelection fitur hanya dapat diimplementasikan di toko online.
  • RequestSource fitur tidak dapat diwujudkan.
  • Fitur materialisasi hanya dapat dihapus di ruang kerja tempat fitur tersebut dibuat.
  • Untuk fitur agregasi yang dimaterialisasi, fitur online yang dimaterialisasi tidak bisa dihapus langsung. Hapus fitur materialisasi offline yang dipasangkan, dan perubahan disebarkan ke keduanya.
  • Untuk fitur agregasi yang dimaterialisasi yang dibuat sebelum 20 April 2026, pemrosesan materialisasi terus menghasilkan nilai fitur yang baru sampai semua fitur yang dimaterialisasi dalam pemrosesan tersebut telah dihapus, yang memicu pembersihan sumber daya. Untuk membuat alur yang diperbarui yang mendukung penghapusan per fitur, hapus dan buat ulang fitur.
  • Untuk fitur materialisasi ColumnSelection , alur materialisasi terus menghasilkan nilai fitur baru sampai semua fitur materialisasi dalam alur telah dihapus, yang memicu pembersihan sumber daya.

Fitur streaming

  • Fitur streaming hanya dapat diwujudkan ke toko online. Materialisasi offline tidak diperlukan karena fitur streaming selama pelatihan dirancang untuk dihitung ulang dari peristiwa historis untuk setiap titik data guna memberikan akurasi tingkat milidetik.
  • Fitur streaming tidak dapat dicampur dengan fitur batch dalam satu materialize_features panggilan.
  • compute_features tidak mendukung fitur streaming.
  • Ruang kerja harus berada di wilayah yang mendukung instans Lakebase.
  • Hanya pesan Kafka yang diserialisasi dalam format JSON yang didukung. Skema pesan harus disediakan langsung dalam format Skema JSON. Registri skema (Confluent, Glue) tidak didukung secara resmi selama pratinjau, tetapi jika Anda memberikan skema secara langsung, alur dapat membaca dari topik yang diatur oleh registri skema.
  • Hanya RollingWindow didukung untuk fitur agregasi streaming. TumblingWindow dan SlidingWindow harus digunakan dengan fitur batch.
  • Hanya fungsi agregasi Count, Avg, Sum, Max, StddevPop, Min, Last, LastDistinct, First, FirstN, LastN, dan FirstDistinct yang didukung untuk fitur streaming.
  • Fitur pemilihan kolom dari sumber streaming tidak menangani pesan yang tidak berurutan. Peristiwa terbaru pada aliran Kafka ditampilkan, bahkan jika nilai kolom timeseries lebih awal dari peristiwa yang diterima sebelumnya.
  • Alur streaming dimulai ulang dua kali seminggu. Setiap mulai ulang dapat menyebabkan penundaan pemrosesan dan waktu mulai hingga 1 menit. Tidak termasuk menghidupkan ulang, kesegaran p99 adalah 200ms.
  • Pengisian ulang fitur untuk materialisasi tidak didukung. Saat sebuah fitur dimaterialisasikan, perhitungannya dilakukan sejak titik itu dan seterusnya. Agregasi yang baru dibuat dalam toko online tidak akurat hingga jangka waktunya berakhir.
  • Hanya Databricks Online Feature Store yang didukung.
  • Alur materialisasi streaming berjalan sebagai alur Lakeflow tanpa server.
  • Ruang kerja tingkat perusahaan saja.