Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Tato funkce je ve verzi Public Preview. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Viz Manage Azure Databricks preview.
Po vytvoření definic zobrazení funkcí, které jsou uložené v katalogu Unity, můžete pomocí definic funkcí vytvořit data funkcí ze zdrojové tabulky. Tento proces se nazývá materializace vašich funkcí. Azure Databricks vytváří a spravuje kanály Lakeflow pro naplnění tabulek v katalogu Unity pro trénování modelů a dávkové vyhodnocování nebo online obsluhu.
Informace o poskytování zobrazení funkcí naleznete v tématu Obsluha zobrazení funkcí.
Požadavky
- Funkce musí být vytvořeny jako zobrazení funkcí a uloženy v katalogu Unity.
- Požadavky na verzi najdete v tématu Požadavky.
-
ColumnSelectionfunkce lze materializovat do online obchodů. Viz materializace ColumnSelection. -
RequestSourcefunkce nelze materializovat, protože představují data zadaná v době odvozování.
Povolení
Materializace interaguje s oprávněními MANAGE a READ FEATURE v Unity Catalog u funkce. Podrobný popis oprávnění viz READ FEATURE.
- Materializace funkce vyžaduje
MANAGE. Volánímaterialize_featuresnebodelete_materialized_featurevytváří a spravuje podkladové kanály Lakeflow a tabulky v katalogu Unity, takže jde o operaci správy. Abyste mohli přečíst definici funkce, která se materializuje, musíte mít u funkceMANAGEspolu sREAD FEATURE. - Čtení materializovaných dat vyžaduje
READ FEATURE.READ FEATUREu feature udělí přístup k offline a online tabulkám, které ji podporují, takže můžete využívat zmaterializovaná data pro trénování a nasazení modelu.list_materialized_featurestaké vyžadujeREAD FEATURE.
Stejně jako u jakéhokoli objektu v katalogu Unity potřebujete také USE CATALOG na nadřazeném katalogu a USE SCHEMA na nadřazeném schématu.
READ FEATURE a MANAGE udělené pro schéma nebo katalog se vztahují na všechny stávající i budoucí objekty, které obsahují.
Datové struktury rozhraní API
OfflineStoreConfig
Konfigurace offline úložiště, kam budou zapsány materializované vlastnosti. Když je materialize_features zavolán, back-end úložiště funkcí vytvoří tabulky pomocí této předpony. Každé spuštění potrubí materializuje nejnovější hodnoty vlastností do tabulky podle harmonogramu materializace.
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
Konfigurace pro online úložiště, ve kterém jsou uložené funkce používané modelem obsluhy. Materializace vytvoří tabulky Delta pomocí catalog.schema.table_name_prefix a streamuje je do Online Feature Store se stejným názvem.
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
Představuje zobrazení funkcí, které bylo materializováno, to znamená, že má předem určenou reprezentaci dostupnou v katalogu Unity. Pro offline tabulku a online tabulku existují samostatné materializované funkce. Uživatelé obvykle nebudou instancovat MaterializedFeature přímo.
Volání funkcí rozhraní API
materialize_features()
Materializuje seznam zobrazení funkcí do offline tabulky Delta nebo do online úložiště funkcí. Před voláním této funkce (například pomocí create_feature nebo register_feature) musí být funkce zaregistrovány v katalogu Unity. Místně vytvořené funkce, které nebyly zaregistrovány, nebudou fungovat.
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]:
Metoda vrátí seznam materializovaných funkcí, které obsahují metadata o tom, kdy jsou hodnoty funkcí aktualizovány, a tabulky Katalogu Unity, kde jsou prvky materializovány.
Pokud jsou obě funkce OnlineStoreConfig a OfflineStoreConfig k dispozici, vrátí se dvě materializované funkce pro každou poskytnutou funkci, jedna pro každý typ úložiště.
Parametr trigger řídí při spuštění kanálu materializace:
-
CronSchedule: Spouští se podle pevného plánu. Podporováno pro funkce hromadné agregace (AggregationFunctionzDeltaTableSource). -
TableTrigger: Spustí se, když upstreamová tabulka Delta obdrží potvrzení. Podporováno pro funkceColumnSelectiona agregační funkce (AggregationFunction) podporované pomocíDeltaTableSource. U agregačních prvků je pipeline omezena tak, aby běžela maximálně jednou za polovinu délky okna funkce. Například maximálně jednou za 30 minut po hodinovém okně, ale nikdy častěji než každých 5 minut. -
StreamingMode: Spouští se jako kanál průběžného streamování. Vyžadováno pro funkce, které jsou podporovány funkcíStreamSource.
V jednom materialize_features volání nelze kombinovat funkce, které vyžadují různé typy triggerů. Místo toho proveďte samostatná volání.
Materializace do offline úložiště
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",
),
)
Zpřístupnit v online obchodě
Note
Pokud chcete materializovat agregační funkce do online obchodu, musíte se také materializovat do offline obchodu. Obě offline_config a online_config jsou povinné.
online_store_name musí odkazovat na existující online Feature Store. Pokyny k jeho vytvoření najdete v tématu Databricks Online Feature Stores.
ColumnSelection funkce nevyžadují OfflineStoreConfig. Viz materializace ColumnSelection.
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",
),
)
Materializace funkcí streamování
Funkce streamování lze materializovat pouze do online obchodů; parametr offline_config není podporován. Offline materializace není podporována, protože streamovací funkce vyžadují pipeline v reálném čase, aby byla zajištěna aktuálnost kratší než jedna sekunda. V případě offline trénování nebo vyhodnocení klient přípravy funkcí znovu zkompiuje hodnoty funkcí na základě vyhodnocených datových bodů.
Funkce streamování se nedají kombinovat s dávkovými funkcemi ve stejném materialize_features volání.
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()
Vrátí materializace jednoho atributu identifikovaného jeho úplným názvem.
feature_name je povinný a lze jej zadat pouze jako pojmenovaný argument. Chcete-li zkontrolovat materializace napříč mnoha funkcemi, nejprve vypište seznam funkcí v katalogu nebo ve schématu a poté na každé vrácené funkci zavolejte list_materialized_features.
Ve výchozím nastavení se vrátí maximálně 100 materializací. Tento limit můžete změnit pomocí parametru 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()
Před odstraněním materializované funkce odeberte nebo aktualizujte všechny modely nebo specifikace funkcí, které na tuto funkci odkazují.
Odstraní materializovanou vlastnost. Funkce, která se má předat, závisí na typu funkce:
- Funkce agregace: Předání offline materializované funkce Pokud existuje online materializovaná funkce pro stejnou funkci, obě se odstraní.
-
ColumnSelectionfunkce: Předejte online materializovanou funkci.ColumnSelectionvlastnosti jsou materializovány pouze v online obchodě (viz materializace ColumnSelection), takže neexistuje žádná propojená offline vlastnost.
V rámci materializace jsou funkce seskupené podle zdroje dat a časového intervalu agregace pro zajištění efektivity.
ColumnSelection funkce nemají žádné okno agregace, takže jsou seskupené pouze podle zdroje dat. Kanál materializace, offline tabulka a online tabulka se neodstraní, dokud se neodstraní všechny seskupené vlastnosti. Když se odstraní poslední materializovaná funkce ve skupině, úložiště funkcí naplánuje přidružené prostředky pro automatické vyčištění procesem na pozadí. Viz Vyčištění prostředků na pozadí.
Pokud chcete vyčistit materializované funkce, podívejte se na tabulku přidruženou k materializované funkci. Před vyčištěním výpočetních prostředků a prostředků tabulky Delta je nutné odstranit každou funkci v tabulce (jednu na sloupec).
Použijte list_materialized_features() k získání argumentu 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)
Materializace výběru sloupce
ColumnSelection funkce umožňují výběr nejnovější hodnoty jediného sloupce pro každý klíč entity bez použití agregace. Mohou být materializovány pouze do online obchodů. Pro případy použití offline (trénování a dávkové odvozování) ColumnSelection se funkce načítají přímo ze zdrojových dat v době dotazu, takže offline materializace není nutná.
Činnost materializace
- Kanál zapíše poslední řádek pro klíč entity do online tabulky bez okna agregace.
- Online materializace naplní online tabulku aktuální nejnovější hodnotou pro každé klíč entity.
Příklad
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 funkce používají TableTrigger, který spouští kanál pokaždé, když zdrojová tabulka Delta obdrží nové potvrzení. Není potřeba offline_config, protože funkce ColumnSelection se čtou přímo ze zdroje pro offline použití (trénování a dávkové odvozování).
Note
RequestSource funkce nelze materializovat, protože představují data poskytnutá volajícím v době odvozování (nebo extrahované z označeného datového rámce v době trénování). Neexistuje žádná zdrojová tabulka, ze které by bylo potřeba číst. Hodnoty existují pouze v datové části požadavku nebo trénovacím datovém rámci.
Čištění prostředků na pozadí
Když odstraníte materializovanou funkci, Databricks okamžitě odebere metadata funkce. Přidružená infrastruktura (tabulky, kanály a úlohy) se asynchronně vyčistí procesem na pozadí.
Vzhledem k tomu, že více materializovaných prvků může sdílet stejné tabulky a kanály zpracování, tyto sdílené prostředky se neodstraní, dokud nebude odstraněn každý materializovaný prvek, který na ně odkazuje. Když se odstraní poslední materializovaná funkce sdílející sadu tabulek, proces na pozadí automaticky odstraní následující prostředky:
- Offline tabulky Delta obsahující materializovaná data funkcí
- Online tabulky, pokud byly funkce materializovány do online obchodu
- Kanál materializace
- Orchestrační úloha
Tento proces na pozadí používá instanční objekt systému spravovaný službou Databricks k provedení těchto akcí čištění vaším jménem, včetně odstranění tabulek, kanálů a úloh ve vašem pracovním prostoru. Od vás není nutná žádná akce. Čištění je plně spravováno úložištěm funkcí.
Note
Mezi odstraněním poslední materializované funkce ve skupině a odebráním přidružených tabulek a dalších prostředků může dojít k krátké prodlevě.
Zobrazení stavu materializace
Chcete-li v uživatelském rozhraní Databricks zobrazit stav materializace svých Feature Views a ladit chyby materializace, přečtěte si Explore Feature Views in Unity Catalog.
Omezení
Funkce služby Batch
- Kanály pro dávkovou materializaci běží jako bezserverové pipeline Lakeflow.
- Funkce dávkového posuvného okna nelze materializovat. Vzhledem k vysoké přesnosti správnosti času se pro každý datový bod generují funkce posuvného okna pro offline trénování nebo dávkové odvozování.
-
ColumnSelectionfunkce lze implementovat pouze do online obchodů. -
RequestSourcevlastnosti nelze zhmotnit. - Materializované funkce je možné odstranit pouze v pracovním prostoru, ve kterém byly vytvořeny.
- U materializovaných agregačních funkcí nelze online materializovanou funkci odstranit přímo. Odstraňte spárovanou offline materializovanou vlastnost a změna se rozšíří na obě strany.
- U materializovaných agregačních funkcí vytvořených před 20. dubnem 2026 kanál materializace pokračuje v vytváření nových hodnot funkcí, dokud nebudou odstraněny všechny materializované funkce v kanálu, což aktivuje vyčištění prostředků. Chcete-li vytvořit aktualizovaný kanál, který podporuje odstranění jednotlivých funkcí, odstraňte a znovu zmaterializujte funkci.
- U materializovaných
ColumnSelectionfunkcí kanál materializace pokračuje ve vytváření nových hodnot funkcí, dokud nebudou odstraněny všechny materializované funkce v kanálu, což aktivuje vyčištění prostředků.
Funkce streamování
- Funkce streamování je možné materializovat pouze do online obchodů. Offline materializace není nutná, protože funkce streamování v době trénování jsou navržené tak, aby byly přepočítané z historických událostí na datový bod, aby poskytovaly přesnost na úrovni milisekund.
- Funkce streamování nelze kombinovat s dávkovými funkcemi v jednom
materialize_featuresvolání. -
compute_featuresnepodporuje funkce streamování. - Pracovní prostor musí být v oblasti, která podporuje instance Lakebase.
- Podporují se pouze serializované zprávy Kafka ve formátu JSON. Schémata zpráv musí být poskytována přímo ve formátu schématu JSON. Registry schémat (Confluent, Glue) nejsou ve verzi Preview formálně podporovány, ale pokud schéma zadáte přímo, kanály zpracování můžou číst z témat spravovaných registrem schémat.
- Pro funkce agregace datových proudů je podporováno pouze
RollingWindow.TumblingWindowaSlidingWindowměly by být použity s funkcemi batch. - Pro streamovací funkce jsou podporovány pouze agregační funkce
StddevPop,FirstDistinct,Last,LastN,First,FirstN,Min,Max,LastDistinct,Sum,AvgaCount. - Funkce výběru sloupců ze streamovaných zdrojů nezpracují zprávy mimo pořadí. Zobrazí se nejnovější událost streamu Kafka, i když je hodnota sloupce timeseries starší než dříve přijatá událost.
- Kanály streamování se restartují dvakrát týdně. Každé restartování může způsobit zpoždění zpracování a dobu spuštění až 1 minutu. S výjimkou restartování je aktuálnost p99 200 ms.
- Backfill pro materializaci není podporován. Když se prvek materializuje, počítá se od tohoto okamžiku dál. Nově vytvořené agregace v internetovém obchodě jsou nepřesné, dokud neuplyne jejich časové okno.
- Podporována je pouze služba Databricks Online Feature Store.
- Kanály pro materializaci streamovaných dat fungují jako bezserverové kanály Lakeflow.
- Pouze pracovní prostory podnikové úrovně.