Funkciónézetek materializálása

Fontos

Ez a funkció nyilvános előzetes verzióban van. A munkaterület rendszergazdái az Előnézetek lapon szabályozhatják a funkcióhoz való hozzáférést. Lásd: Az Azure Databricks előzetes verziójának kezelése.

Miután létrehozta a Unity Katalógusban tárolt funkciónézet-definíciókat, a szolgáltatásdefiníciók használatával szolgáltatásadatokat állíthat elő a forrástáblából. Ezt a folyamatot a funkciók materializálásának nevezzük. Az Azure Databricks Lakeflow-folyamatokat hoz létre és kezel a Unity Catalogban lévő táblák feltöltéséhez modellbetanításhoz, kötegelt pontozáshoz vagy online kiszolgáláshoz.

A szolgáltatásnézetek kiszolgálásáról további információt a Szolgáltatásnézetek kiszolgálása című témakörben talál.

Requirements

  • A funkciókat szolgáltatásnézetként kell létrehozni, és a Unity Katalógusban kell tárolni.
  • A verziókövetelményekről a Követelmények című témakörben olvashat.
  • ColumnSelection szolgáltatásokat lehet materializálni az online áruházakban. Lásd : ColumnSelection materialization.
  • RequestSource a funkciók nem materializálhatók, mert a következtetési időpontban megadott adatokat jelölik.

Permissions

A materializálás kapcsolatban áll a funkción beállított MANAGE és READ FEATURE Unity Catalog-jogosultságokkal. A jogosultságok teljes leírását lásd itt: READ FEATURE.

  • Egy funkció materializálásához szükség van MANAGErá. A(z) materialize_features vagy delete_materialized_feature meghívása létrehozza és kezeli a mögöttes Lakeflow-adatfolyamokat és Unity Catalog-táblákat, ezért ez felügyeleti műveletnek minősül. A funkcióhoz MANAGE jogosultsággal kell rendelkeznie, valamint READ FEATURE jogosultsággal a materializált funkciódefiníció olvasásához.
  • A materializált adatok olvasásához szükséges READ FEATURE. READ FEATURE a funkció hozzáférést biztosít a háttérként szolgáló offline és online táblákhoz, így a materializált adatokat felhasználhatja a modell betanításához és kiszolgálásához. list_materialized_features szintén igényli a(z) READ FEATURE-t.

Mint minden Unity Catalog-objektum esetében, a szülőkatalóguson is szüksége van a USE CATALOG jogosultságra, a szülősémán pedig a USE SCHEMA jogosultságra. READ FEATURE és MANAGE a sémán vagy katalóguson megadott összes jelenlegi és jövőbeli funkcióra érvényes.

API-adatstruktúrák

OfflineStoreConfig

Az offline áruház konfigurációja, ahol a materializált funkciók meg lesznek írva. Amikor materialize_features meghívják, a szolgáltatástár háttérrendszere ezzel az előtaggal hoz létre táblákat. Minden folyamatfuttatás a materializálási ütemezésnek megfelelően materializálja a legújabb funkcióértékeket a táblában.

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

Az online áruház konfigurációja, amely a modellkiszolgáló által használt funkciókat tárolja. A materializálás létrehozza a Delta-táblákat catalog.schema.table_name_prefix-val/vel, és ugyanazon névvel streameli őket az Online jellemzőtárolóba.

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

Olyan funkciónézetet jelöl, amely materializált, azaz előre lefordított megjelenítéssel rendelkezik, amely elérhető a Unity Katalógusban. Az offline és az online táblához külön materializált funkciók tartoznak. A felhasználók általában nem hoznak létre közvetlenül példányt MaterializedFeature.

API-függvényhívások

materialize_features()

A funkciónézetek listáját offline Delta-táblába vagy online szolgáltatástárba helyezi. A funkciókat regisztrálni kell a Unity Katalógusban a függvény meghívása előtt (például create_feature vagy register_feature használatával). A helyileg létrehozott, nem regisztrált funkciók nem fognak működni.

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]:

A metódus visszaadja a materializált funkciók listáját, amelyek metaadatokat tartalmaznak arról, hogy mikor frissülnek a funkcióértékek, és a Unity-katalógus táblázatai, amelyekben a funkciók materializálva vannak.

Ha mind egy OnlineStoreConfig , mind egy OfflineStoreConfig meg van adva, akkor a rendszer két materializált funkciót ad vissza a megadott funkciók szerint, egyet az egyes tárolótípusokhoz.

A trigger paraméter szabályozza a materializálási folyamat futását:

  • CronSchedule: Rögzített ütemezés szerint fut. Támogatott a batch aggregációs funkciókhoz (AggregationFunction from DeltaTableSource).
  • TableTrigger: Akkor fut, amikor a felsőbb rétegbeli Delta-tábla véglegesítést kap. Támogatott funkciók ColumnSelection és aggregációs funkciók (AggregationFunction) támogatásával, amelyet egy DeltaTableSource. Az aggregációs funkciók esetén a csővezetéket korlátozva futják, legfeljebb egyszer fut a funkció ablakhosszának felében. Például legfeljebb 30 percenként egyszer egy 1 órás időablakon, de soha többször mint 5 percente.
  • StreamingMode: Folyamatos streamelési folyamatként fut. A(z) StreamSource által támogatott funkciókhoz szükséges.

Nem kombinálhatja azokat a funkciókat, amelyek különböző eseményindító-típusokat igényelnek egyetlen materialize_features hívásban. Ehelyett bocsássanak ki külön hívásokat.

Anyagiasítás egy offline boltban

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",
    ),
)

Átültetés egy online áruházra

Megjegyzés:

Az aggregációs funkciók online áruházakban való materializálásához offline áruházat is létre kell hoznia. Mindkettőre offline_configonline_config szükség van. A online_store_name programnak egy meglévő online szolgáltatástárolóra kell hivatkoznia. A létrehozással kapcsolatos utasításokért tekintse meg a Databricks Online szolgáltatástárolóit.

ColumnSelection funkciókhoz nincs szükség a OfflineStoreConfig-ra. Lásd : ColumnSelection materialization.

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",
    ),
)

Streamelési funkciók materializálása

A streamelési funkciók csak online áruházakban valósulhatnak meg; a offline_config paraméter nem támogatott. Az offline materializálás nem támogatott, mert a streamelési funkciók valós idejű folyamatot igényelnek a másodperc alatti frissesség biztosításához. Offline betanítás vagy kiértékelés esetén a szolgáltatásmérnöki ügyfél minden kiértékelt adatpont alapján újrafordítja a szolgáltatásértékeket.

A streamelési funkciók nem keverhetők egy materialize_features hívás kötegfunkcióival.

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()

Egyetlen funkció materializációit adja vissza, amelyet a teljes neve azonosít. feature_name kötelező, és csak kulcsszóként adható meg. A számos funkció materializációinak áttekintéséhez először sorolja fel a katalógus vagy séma funkcióit, majd hívja meg list_materialized_features az egyes visszaadott funkciókat.

Alapértelmezés szerint a rendszer legfeljebb 100 materializációt ad vissza. Ezt a korlátot a paraméterrel módosíthatja max_results .

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()

A materializált funkciók törlése előtt távolítsa el vagy frissítse a szolgáltatásra hivatkozó modelleket vagy szolgáltatás-specifikációkat.

Materializált funkció törlése. Az átadni kívánt funkció a szolgáltatás típusától függ:

  • Összesítési funkciók: Adja át az offline materializált funkciót. Ha ugyanahhoz a funkcióhoz online materializált funkció tartozik, mindkettő törlődik.
  • ColumnSelection funkciók: Adja át az online materializált funkciót. ColumnSelection a funkciók csak az online áruházban vannak materializálva (lásd : ColumnSelection materialization), így nincs párosított offline funkció.

A materializálás részeként a funkciók adatforrás és összesítési ablak szerint vannak csoportosítva a hatékonyság érdekében. ColumnSelection a funkcióknak nincs összesítési ablakuk, ezért csak adatforrások szerint vannak csoportosítva. A materializálási folyamat, az offline tábla és az online tábla mindaddig nem törlődik, amíg az összes csoportosított funkció nem törlődik. A csoport utolsó materializált funkciójának törlésekor a funkciótároló egy háttérfolyamattal ütemezi a társított erőforrásokat az automatikus törléshez. Lásd: Háttérerőforrás-karbantartás.

A materializált funkciók eltávolításához tekintse meg a materializált funkcióhoz társított táblát. A számítás és a Delta tábla erőforrásainak megtisztítása előtt törölni kell a tábla minden funkcióját (oszloponként egyet).

Az argumentum lekérésére list_materialized_features() használhatómaterialized_feature.

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)

OszlopKiválasztás anyagiasítás

ColumnSelection a funkciók az entitáskulcsonkénti egyetlen oszlop legújabb értékét választják ki összesítés nélkül. Ezeket csak online áruházakban lehet materializálni. Offline használati esetek (betanítás és kötegelt következtetés) ColumnSelection esetén a funkciók lekérdezéskor közvetlenül a forrásadatokból lesznek lekérve, így nincs szükség offline materializálásra.

Materializálási viselkedés

  • A folyamat entitáskulcsonként a legutóbbi sort írja az online táblába összesítési ablak nélkül.
  • Az online materializálás feltölti az online táblát az entitáskulcsonkénti aktuális legújabb értékkel.

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 funkciói a TableTrigger használatával futtatják a folyamatot, amikor a forrás Delta-tábla új commitot kap. Nem offline_config szükséges, mert ColumnSelection funkciók közvetlenül a forrásból olvasnak offline esetekhez (betanítás és kötegelt következtetés).

Megjegyzés:

RequestSource a jellemzők nem képezhetők, mert a hívó által a következtetési időpontban megadott adatokat jelölik (vagy a betanításkor kinyerik a címkézett DataFrame-ből). Nincs forrástábla, amelyből olvasni lehet. Az értékek csak a kérés törzsében vagy a betanításhoz használt DataFrame-ben találhatók meg.

Háttérerőforrás-karbantartás

Egy materializált funkció törlésekor a Databricks azonnal eltávolítja a szolgáltatás metaadatait. A társított infrastruktúra (táblák, adatfolyamok és feladatok) eltávolítása aszinkron módon, egy háttérfolyamat által történik.

Mivel több materializált funkció is megoszthatja ugyanazokat a táblákat és folyamatokat, ezek a megosztott erőforrások mindaddig nem lesznek eltávolítva, amíg az rájuk hivatkozó összes materializált funkciót nem törölték. Amikor az utolsó materializált funkciómegosztás egy táblakészletet töröl, a háttérfolyamat automatikusan törli a következő erőforrásokat:

  • A materializált szolgáltatásadatokat tartalmazó offline Delta-táblák
  • Az online táblák, ha a funkciók egy online áruházban valósultak meg
  • A materializálási folyamat
  • Az orchesztrációs feladat

Ez a háttérfolyamat egy Databricks által felügyelt rendszerszolgáltatás-tag használatával hajtja végre ezeket a törlési műveleteket az Ön nevében, beleértve a táblák, folyamatok és feladatok törlését a munkaterületen. Nincs szükség semmilyen intézkedésre az Ön részéről. A tisztítás kezelését teljes mértékben a feature store végzi.

Megjegyzés:

Előfordulhat, hogy a csoport utolsó materializált funkciójának törlése és a kapcsolódó táblák és egyéb erőforrások eltávolítása között rövid késleltetés áll fenn.

Materializálás állapotának megtekintése

A Feature View-k materializálási állapotának megtekintéséhez a Databricks felhasználói felületén, beleértve a materializálási hibák hibakeresését is, lásd: Feature View-k felfedezése a Unity Catalogban.

Korlátozások

Batch-funkciók

  • A batch materializálási folyamatok kiszolgáló nélküli Lakeflow-folyamatokként futnak.
  • A kötegelt gördülőablak-funkciók nem valósulhatnak meg. Az időzítés pontos megbízhatósága miatt az offline betanítás vagy a kötegelt következtetés gördülő ablak funkciói azonnal létrejönnek minden adatponthoz.
  • ColumnSelection szolgáltatások csak online áruházakban valósulhatnak meg.
  • RequestSource funkciókat nem lehet materializálni.
  • A materializált funkciók csak abban a munkaterületen törölhetők, amelyben létrehozták őket.
  • A materializált összesítési funkciók esetében az online materializált funkció nem törölhető közvetlenül. Törölje a párosított offline materializált jellemzőt, és a módosítás mindkettőre érvényes lesz.
  • A 2026. április 20. előtt létrehozott materializált aggregációs funkciók esetében a materializálási folyamat mindaddig új funkcióértékeket hoz létre, amíg a folyamat összes materializált szolgáltatását el nem törlik, ami az erőforrás-törlést váltja ki. Ha olyan frissített folyamatot szeretne létrehozni, amely támogatja a funkciónkénti törlést, törölje és hozza létre újra a funkciót.
  • A materializált ColumnSelection szolgáltatások esetében a materializálási folyamat mindaddig új funkcióértékeket hoz létre, amíg a folyamat összes materializált szolgáltatása el nem törlődik, ami az erőforrás-törlést váltja ki.

Streamelési funkciók

  • A streamelési funkciók csak online áruházakban valósulhatnak meg. Nincs szükség offline materializálásra, mert a tanításkor használt streamingjellemzőket úgy alakították ki, hogy az egyes adatpontokhoz tartozó historikus eseményekből újra lehessen őket számítani, ezredmásodperces pontosság biztosítása mellett.
  • A streamelési funkciók nem keverhetők egy hívás kötegfunkcióival materialize_features .
  • compute_features nem támogatja a streamelési funkciókat.
  • A munkaterületnek olyan régióban kell lennie, ahol támogatott a Lakebase-példányok használata.
  • Csak JSON-szerializált Kafka-üzenetek támogatottak. Az üzenetsémákat közvetlenül JSON-séma formátumban kell megadni. A sémaregisztrációs adatbázisok (Confluent, Glue) formálisan nem támogatottak az előzetes verzióban, de ha közvetlenül adja meg a sémát, a folyamatok a sémaregisztrációs adatbázis által szabályozott témakörökből olvashatnak.
  • A streamelési aggregációs funkciókhoz csak a(z) RollingWindow támogatott. A(z) TumblingWindow és SlidingWindow elemeket a kötegelt funkciókhoz kell használni.
  • A streamelési funkciók csak Count, Avg, Sum, StddevPop, Max, Minés Last összesítő függvényeket támogatnak.
  • A streamelési forrásokból származó oszlopkijelölési funkciók nem kezelik a rendelésen kívüli üzeneteket. A Kafka-stream legújabb eseménye akkor is megjelenik, ha az időbélyegek oszlopának értéke korábbi, mint egy korábban kapott esemény.
  • A streamelési folyamatok hetente kétszer újraindulnak. Minden újraindítás akár 1 perces feldolgozási késéseket és indítási időket is okozhat. Az újraindítások kivételével a p99 frissesség 200 ms.
  • A funkciók utólagos feltöltése materializálás esetén nem támogatott. Ha egy funkció materializálva van, attól a ponttól számít előre. Az online áruházban újonnan létrehozott összesítések pontatlanok, amíg el nem telt az időkeretük.
  • Csak a Databricks Online feature Store támogatott.
  • Csak a saját felhőalapú objektumtárolóban létrehozott Standard Katalógusok támogatottak a Unity Katalógusban. Az alapértelmezett tárolóban létrehozott katalógusok nem használhatók.
  • A streaming materializációs folyamatok szerver nélküli Lakeflow-folyamatokként futnak.
  • Csak vállalati szintű munkaterületek.