Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Analogamente alle viste standard, le viste materializzate sono i risultati di una query e si accede allo stesso modo di una tabella. A differenza delle viste standard, che ricompilano i risultati in ogni query, le viste materializzate memorizzano nella cache i risultati e le aggiornano in base a un intervallo specificato. Poiché una vista materializzata è precomputata, le query su di essa possono essere eseguite molto più velocemente rispetto alle normali viste.
Per indicazioni su quando usare viste materializzate rispetto a tabelle o viste di streaming, vedere Che cosa sono le pipeline?.
Una vista materializzata è un oggetto pipeline dichiarativo. Include una query che lo definisce, un flusso per aggiornarlo e i risultati memorizzati nella cache per l'accesso rapido. Vista materializzata:
- Tiene traccia delle modifiche nei dati upstream.
- In caso di trigger, elabora in modo incrementale i dati modificati e applica le trasformazioni necessarie.
- Gestisce la tabella di output, sincronizzata con i dati di origine, in base a un intervallo di aggiornamento specificato.
Le viste materializzate sono una buona scelta per molte trasformazioni:
- Si applica il ragionamento sui risultati memorizzati nella cache anziché sulle righe. In effetti, è sufficiente scrivere una query.
- Sono sempre corretti al momento dell'aggiornamento. Tutti i dati necessari vengono elaborati, anche se arrivano in ritardo o non in ordine.
- Sono spesso incrementali. Databricks tenta di scegliere la strategia appropriata che riduce al minimo il costo dell'aggiornamento di una vista materializzata.
Funzionamento delle visualizzazioni materializzate
Il diagramma seguente illustra il funzionamento delle viste materializzate.
Le viste materializzate vengono definite e aggiornate da una singola pipeline. È possibile definire in modo esplicito le viste materializzate nel codice sorgente della pipeline. Le tabelle definite da una pipeline non possono essere modificate o aggiornate da altre pipeline.
Nota
Quando si crea una vista materializzata autonoma, all'esterno di Lakeflow Spark Declarative Pipelines, Azure Databricks crea una pipeline usata per aggiornare la vista. È possibile visualizzare la pipeline selezionando ETL. Le viste materializzate indipendenti hanno un tipo di MV/ST. Vedere Usare viste materializzate autonome.
Databricks usa Unity Catalog per archiviare i metadati relativi alla visualizzazione, incluse le query e le visualizzazioni di sistema aggiuntive per gli aggiornamenti incrementali. Databricks materializza i dati memorizzati nella cache nell'archiviazione cloud.
Nota
Databricks crea tabelle interne per supportare l'aggiornamento incrementale della vista materializzata. Queste tabelle vengono visualizzate in system.information_schema.tables ma non sono visibili in Esplora cataloghi o in altre aree dell'interfaccia utente dell'area di lavoro.
L'esempio seguente unisce due tabelle e mantiene aggiornato il risultato usando una vista materializzata.
Python
from pyspark import pipelines as dp
@dp.materialized_view
def regional_sales():
partners_df = spark.read.table("partners")
sales_df = spark.read.table("sales")
return (
partners_df.join(sales_df, on="partner_id", how="inner")
)
SQL
CREATE OR REPLACE MATERIALIZED VIEW regional_sales
AS SELECT *
FROM partners
INNER JOIN sales ON
partners.partner_id = sales.partner_id;
Aggiornamenti incrementali automatici
Quando viene attivata la pipeline che definisce una vista materializzata, la vista viene mantenuta automaticamente aggiornata, spesso in modo incrementale. Databricks tenta di elaborare solo i dati che devono essere elaborati per mantenere aggiornata la visualizzazione materializzata. Una vista materializzata mostra sempre il risultato corretto, anche se richiede la ricompilazione completa del risultato della query da zero, ma spesso Databricks apporta solo aggiornamenti incrementali a una vista materializzata, che può essere molto meno costosa di una ricompilazione completa.
Il diagramma seguente mostra una vista materializzata denominata sales_report, che è il risultato dell'unione di due tabelle upstream denominate clean_customers e clean_transactionse il raggruppamento per paese. Un processo upstream inserisce 200 righe clean_customers in tre paesi (Stati Uniti, Paesi Bassi, Regno Unito) e aggiorna 5.000 righe in clean_transactions corrispondenti a questi nuovi clienti. La sales_report vista materializzata viene aggiornata in modo incrementale solo per i paesi che dispongono di nuovi clienti o transazioni corrispondenti. In questo esempio vengono aggiornate tre righe anziché l'intero report vendite.
Per altre informazioni sul funzionamento dell'aggiornamento incrementale nelle viste materializzate, vedere Aggiornamento incrementale per le viste materializzate.
Limitazioni delle visualizzazioni materializzate
Le viste materializzate presentano le limitazioni seguenti:
- Poiché gli aggiornamenti creano query corrette, alcune modifiche agli input richiedono una ricompilazione completa di una vista materializzata, che può risultare costosa.
- Non sono progettati per casi d'uso a bassa latenza. La latenza di aggiornamento di una vista materializzata è espressa in secondi o minuti, non in millisecondi.
- Non tutti i calcoli possono essere calcolati in modo incrementale.
- Azure Databricks tenta di rilevare quando una funzione definita dall'utente usata in una vista materializzata modifica il comportamento ed esegue un aggiornamento completo per applicare la funzione definita dall'utente aggiornata. Tuttavia, le funzioni definite dall'utente che chiamano altre funzioni o librerie possono modificare il comportamento in modi che Azure Databricks non è in grado di riconoscere. Un esempio è quando una libreria chiamata viene aggiornata. Quando il comportamento di una FDU cambia, spetta a te eseguire un aggiornamento completo su qualsiasi vista materializzata che la utilizza.
- Le viste materializzate non supportano
CLONE. Non è possibile usare una vista materializzata né come origine né come destinazione di un clone profondo o superficiale. Per altre informazioni, vedere Limitazioni. - Per visualizzare la pipeline che esegue il backup di una vista materializzata, un utente non amministratore deve disporre dei
REFRESHprivilegi per la vista materializzata oltre alle autorizzazioni per la pipeline. Vedere Chi può visualizzare una pipeline e il relativo output?