Materializzare le visualizzazioni delle funzionalità

Importante

Questa funzionalità è in Anteprima Pubblica. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.

Dopo aver creato le definizioni di Visualizzazione funzionalità, archiviate nel catalogo Unity, è possibile produrre dati delle funzionalità dalla tabella di origine usando le definizioni delle funzionalità. Questo processo è detto materializzazione delle funzionalità. Azure Databricks crea e gestisce le pipeline di Lakeflow per popolare le tabelle di Unity Catalog per l'addestramento dei modelli e l'assegnazione di punteggi in batch o il serving online.

Per informazioni sulla gestione delle visualizzazioni delle funzionalità, vedere Gestire le visualizzazioni delle funzionalità.

Requisiti

  • Le funzionalità devono essere create come visualizzazioni delle funzionalità e archiviate nel catalogo unity.
  • Per i requisiti di versione, vedere Requisiti.
  • ColumnSelection le caratteristiche possono essere materializzate nei negozi online. Consulta Materializzazione ColumnSelection.
  • RequestSource Le funzionalità non possono essere materializzate perché rappresentano i dati forniti in fase di inferenza.

Permissions

La materializzazione interagisce con i privilegi di Unity Catalog MANAGE e READ FEATURE sulla funzionalità. Per le descrizioni dei privilegi completi, vedere READ FEATURE.

  • La materializzazione di una funzionalità richiede MANAGE. La chiamata di materialize_features o delete_materialized_feature crea e gestisce le pipeline Lakeflow sottostanti e le tabelle di Unity Catalog, pertanto si tratta di un'operazione di gestione. È necessario disporre di MANAGE per la funzionalità, insieme a READ FEATURE, per leggere la definizione della funzionalità in fase di materializzazione.
  • La lettura dei dati materializzati richiede READ FEATURE. READ FEATURE nella funzionalità concede l'accesso alle tabelle offline e online che lo riportano, in modo da poter utilizzare i dati materializzati per il training e la gestione del modello. list_materialized_features richiede anche READ FEATURE.

Come per qualsiasi oggetto Catalogo Unity, è necessario USE CATALOG anche nel catalogo padre e USE SCHEMA nello schema padre. READ FEATURE e MANAGE concessi per uno schema o un catalogo si applicano a tutte le funzionalità correnti e future contenute.

Strutture di dati API

OfflineStoreConfig

Configurazione per l'archivio offline in cui verranno scritte le funzionalità materializzate. Quando materialize_features viene chiamato, il back-end dell'archivio delle funzionalità crea delle tabelle usando questo prefisso. Ogni esecuzione della pipeline materializza i valori delle caratteristiche più recenti nella tabella in base al programma di materializzazione.

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

Configurazione per il negozio online, che conserva le funzionalità usate dal serving del modello. La materializzazione crea tabelle Delta con il catalog.schema.table_name_prefix e trasmette le tabelle all'Online Feature Store con lo stesso nome.

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

Rappresenta una Feature View materializzata, vale a dire con una rappresentazione precalcolata disponibile in Unity Catalog. Sono disponibili funzionalità materializzate separate per la tabella offline e la tabella online. In genere, gli utenti non creeranno direttamente un'istanza di MaterializedFeature.

Chiamate di funzioni API

materialize_features()

Materializza un elenco di Feature View in una tabella Delta offline oppure in un Feature Store online. Le funzionalità devono essere registrate in Unity Catalog prima di chiamare questa funzione (ad esempio, usando create_feature o register_feature). Le funzionalità costruite localmente che non sono state registrate non funzioneranno.

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

Il metodo restituisce un elenco di funzionalità materializzate, che contengono metadati relativi all'aggiornamento dei valori delle funzionalità e alle tabelle del catalogo Unity in cui vengono materializzate le funzionalità.

Se vengono forniti sia un OnlineStoreConfig sia un OfflineStoreConfig, vengono restituite due caratteristiche materializzate per ogni caratteristica fornita, una per ciascun tipo di negozio.

Il parametro trigger controlla il momento in cui viene eseguita la pipeline di materializzazione.

  • CronSchedule: viene eseguito in base a una pianificazione fissa. Obbligatorio per le funzionalità di aggregazione batch (AggregationFunction da DeltaTableSource).
  • TableTrigger: viene eseguito quando la tabella Delta upstream riceve un commit. Obbligatorio per le funzionalità ColumnSelection supportate da un oggetto DeltaTableSource.
  • StreamingMode: funziona come pipeline di streaming continua. Obbligatorio per le funzionalità supportate da un oggetto StreamSource.

Non è possibile combinare funzionalità che richiedono tipi di trigger diversi in una singola materialize_features chiamata. In alternativa, eseguire chiamate separate.

Materializzare l'archivio 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",
    ),
)

Concretizzare nel negozio online

Note

Per materializzare le funzionalità di aggregazione in un negozio online, è necessario anche materializzare un negozio offline. Sia offline_config che online_config sono obbligatori. Deve online_store_name fare riferimento a un "Online Feature Store" esistente. Per istruzioni sulla creazione di uno, vedere Archivio funzionalità online di Databricks.

Le funzionalità ColumnSelection non richiedono un OfflineStoreConfig. Consulta Materializzazione 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",
    ),
)

Materializzare le funzionalità di streaming

Le funzionalità di streaming possono essere materializzate solo nei negozi online; il offline_config parametro non è supportato. La materializzazione offline non è supportata perché le funzionalità di streaming richiedono una pipeline in tempo reale per garantire una freschezza inferiore al secondo. Per il training o la valutazione offline, il client di progettazione delle funzionalità ricompila i valori delle funzionalità in base a ogni punto dati valutato.

Le funzionalità di streaming non possono essere combinate con le funzionalità batch nella stessa materialize_features chiamata.

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

Restituisce le materializzazioni di una singola caratteristica, identificata dal nome completo. feature_name è obbligatorio e solo parola chiave. Per esaminare le materializzazioni in molte funzionalità, elencare prima le funzionalità in un catalogo o uno schema, quindi chiamare list_materialized_features su ogni funzionalità restituita.

Per impostazione predefinita, viene restituito un massimo di 100 materializzazioni. È possibile modificare questo limite usando il max_results parametro .

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

Prima di eliminare una funzionalità materializzata, rimuovere o aggiornare i modelli o le specifiche di funzionalità che fanno riferimento alla funzionalità.

Elimina una funzionalità materializzata. La funzionalità da passare dipende dal tipo di funzionalità:

  • Funzionalità di aggregazione: passare la funzionalità materializzata offline. Se è presente una funzionalità materializzata online per la stessa funzionalità, entrambe vengono eliminate.
  • ColumnSelection funzionalità: passare la funzionalità materializzata online. ColumnSelection le caratteristiche vengono materializzate solo per il negozio online (vedere materializzazione ColumnSelection), quindi non esiste alcuna corrispondente funzionalità offline.

Nell'ambito della materializzazione, le funzionalità vengono raggruppate in base all'origine dati e alla finestra di aggregazione per garantire l'efficienza. ColumnSelection le funzionalità non hanno finestra di aggregazione, quindi vengono raggruppate solo per origine dati. La pipeline di materializzazione, la tabella offline e la tabella online non vengono eliminate fino a quando non vengono eliminate tutte le funzionalità raggruppate. Quando viene eliminata l'ultima funzionalità materializzata in un gruppo, l'archivio funzionalità pianifica le risorse associate per la pulizia automatica tramite un processo in background. Vedi Pulizia delle risorse in background.

Per pulire le funzionalità materializzate, esaminare la tabella associata a una funzionalità materializzata. Ogni funzionalità della tabella (una per colonna) deve essere eliminata prima di pulire le risorse di tabella Delta e di calcolo.

Usare list_materialized_features() per ottenere l'argomento 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)

Materializzazione di selezione colonne

ColumnSelection le funzionalità selezionano il valore più recente di una singola colonna per ogni chiave di entità senza aggregazione. Possono essere materializzati solo nei negozi online. Per i casi d'uso offline (inferenza di training e batch), ColumnSelection le funzionalità vengono recuperate direttamente dai dati di origine in fase di query, quindi la materializzazione offline non è necessaria.

Comportamento di materializzazione

  • La pipeline scrive la riga più recente per ogni chiave di entità nella tabella online, senza finestra di aggregazione.
  • La materializzazione online popola la tabella online con il valore più recente per ogni chiave di entità.

Esempio

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 le funzionalità usano TableTrigger, che esegue la pipeline ogni volta che la tabella Delta di origine riceve un nuovo commit. Non è necessario offline_config perché le funzionalità di ColumnSelection vengono lette direttamente dall'origine per i casi d'uso offline (training e inferenza batch).

Note

RequestSource le funzionalità non possono essere materializzate perché rappresentano i dati forniti dal chiamante in fase di inferenza (o estratti dal dataframe etichettato in fase di training). Non esiste alcuna tabella di origine da cui leggere. I valori esistono solo nel payload della richiesta o nel dataframe di training.

Pulizia delle risorse in background

Quando si elimina una funzionalità materializzata, Databricks rimuove immediatamente i metadati della funzionalità. L'infrastruttura associata (tabelle, pipeline e processi) viene pulita in modo asincrono da un processo in background.

Poiché più funzionalità materializzate possono condividere le stesse tabelle e pipeline, queste risorse condivise non vengono rimosse fino a quando non viene eliminata ogni funzionalità materializzata che vi fa riferimento. Quando viene eliminata l'ultima funzionalità materializzata che condivide un set di tabelle, il processo in background elimina automaticamente le risorse seguenti:

  • Tabelle Delta offline contenenti i dati delle funzionalità materializzate
  • Le tabelle online, se le funzionalità sono state materializzate in un negozio online
  • Pipeline di materializzazione
  • Processo di orchestrazione

Questo processo in background usa un'entità servizio di sistema gestita da Databricks per eseguire queste azioni di pulizia per conto dell'utente, tra cui l'eliminazione di tabelle, pipeline e processi nell'area di lavoro. Non è necessaria alcuna azione da parte dell'utente. La pulizia è completamente gestita dal feature store.

Note

Potrebbe verificarsi un breve ritardo tra l'eliminazione dell'ultima funzionalità materializzata in un gruppo e la rimozione delle tabelle associate e di altre risorse.

Visualizzare lo stato di materializzazione

Per visualizzare lo stato di materializzazione delle Feature View nell'interfaccia utente di Databricks, incluso il debug degli errori di materializzazione, consulta Esplorare le Feature View in Unity Catalog.

Limitazioni

Funzionalità di Batch

  • Le pipeline di materializzazione in batch vengono eseguite come pipeline serverless di Lakeflow.
  • Non è possibile materializzare le funzionalità della finestra mobile batch. A causa dell'elevata fedeltà della correttezza temporale, le caratteristiche della finestra mobile per l'addestramento offline o l'inferenza batch vengono create dinamicamente per ogni punto dati.
  • ColumnSelection le caratteristiche possono essere materializzate solo nei negozi online.
  • RequestSource non è possibile materializzare le caratteristiche.
  • Le funzionalità materializzate possono essere eliminate solo nell'area di lavoro in cui sono state create.
  • Per le funzionalità di aggregazione materializzate, la funzionalità materializzata online non può essere eliminata direttamente. Eliminare la funzionalità materializzata offline abbinata e la modifica viene propagata a entrambi.
  • Per le funzionalità di aggregazione materializzate create prima del 20 aprile 2026, la pipeline di materializzazione continua a produrre nuovi valori di funzionalità fino a quando non vengono eliminate tutte le funzionalità materializzate nella pipeline, che attiva la pulizia delle risorse. Per creare una pipeline aggiornata che supporta l'eliminazione per funzionalità, eliminare e rimaterializzare la funzionalità.
  • Per le funzionalità materializzate ColumnSelection , la pipeline di materializzazione continua a produrre nuovi valori di funzionalità fino a quando non vengono eliminate tutte le funzionalità materializzate nella pipeline, che attiva la pulizia delle risorse.

Funzionalità di streaming

  • Le funzionalità di streaming possono essere materializzate solo negli store online. La materializzazione offline non è necessaria perché le funzionalità di streaming in fase di training sono progettate per essere ricalcolate da eventi cronologici per punto dati per fornire un'accuratezza a livello di millisecondo.
  • Le funzionalità di streaming non possono essere combinate con le funzionalità batch in una singola materialize_features chiamata.
  • compute_features non supporta le funzionalità di streaming.
  • L'area di lavoro deve trovarsi in un'area che supporta le istanze di Lakebase.
  • Sono supportati solo i messaggi Kafka serializzati JSON. Gli schemi dei messaggi devono essere forniti direttamente in formato schema JSON. I registri di schemi (Confluent, Glue) non sono formalmente supportati durante la fase di anteprima, ma se si fornisce direttamente lo schema, le pipeline possono leggere da topic gestiti da un registro di schemi.
  • È supportato solo RollingWindow per le funzionalità di aggregazione di streaming. TumblingWindow e SlidingWindow devono essere usati con le funzionalità batch.
  • Per le funzionalità di streaming sono supportate solo le funzioni di aggregazione Count, Avg, Sum, StddevPop, Max, Min e Last.
  • Le funzionalità di selezione delle colonne dalle origini di streaming non gestiscono i messaggi non ordinati. Viene visualizzato l'evento più recente nel flusso Kafka, anche se il valore della colonna timeseries è precedente a un evento ricevuto in precedenza.
  • Le pipeline di streaming vengono riavviate due volte alla settimana. Ogni riavvio può causare ritardi di elaborazione e tempi di avvio fino a 1 minuto. Esclusi i riavvii, la freschezza p99 è di 200 ms.
  • Il riempimento delle funzionalità per la materializzazione non è supportato. Quando una funzionalità viene materializzata, viene calcolata da quel punto in avanti. Le aggregazioni appena create nell'archivio dati online non sono accurate finché la relativa finestra temporale non è trascorsa.
  • È supportato solo Databricks Online Feature Store .
  • Sono supportati solo i cataloghi standard in Unity Catalog creati nella propria risorsa di archiviazione di oggetti cloud. Non è possibile usare i cataloghi creati nella risorsa di archiviazione predefinita .
  • Le pipeline di materializzazione in streaming vengono eseguite come pipeline serverless di Lakeflow.
  • Solo aree di lavoro livello Enterprise.