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.
Questo articolo descrive come creare e aggiornare viste materializzate in Databricks SQL per migliorare le prestazioni e ridurre il costo dei carichi di lavoro di elaborazione e analisi dei dati.
Che cosa sono le viste materializzate?
In Databricks SQL, le viste materializzate sono tabelle gestite di Unity Catalog che archiviano fisicamente i risultati di una query. A differenza delle viste standard, che calcolano i risultati su richiesta, le viste materializzate memorizzano nella cache i risultati e le aggiornano man mano che cambiano le tabelle di origine sottostanti, in base a una pianificazione o automaticamente.
Le viste materializzate sono particolarmente adatte per i carichi di lavoro di elaborazione dei dati, ad esempio l'estrazione, la trasformazione e il caricamento (ETL). Le viste materializzate offrono un modo semplice e dichiarativo per elaborare i dati per la conformità, le correzioni, le aggregazioni o l'acquisizione generale dei dati delle modifiche (CDC). Le viste materializzate consentono anche trasformazioni facili da usare, pulendo, arricchendo e denormalizzando le tabelle di base. Pre-calcolando query costose o utilizzate di frequente, le viste materializzate riducono la latenza delle query e il consumo di risorse. In molti casi, possono calcolare in modo incrementale le modifiche dalle tabelle di origine, migliorando ulteriormente l'efficienza e l'esperienza dell'utente finale.
Di seguito sono riportati i casi d'uso comuni per le viste materializzate:
- Mantenere aggiornato un cruscotto di Business Intelligence con una latenza minima delle query dell'utente finale.
- Riduzione dell'orchestrazione ETL complessa con logica SQL semplice.
- Creazione di trasformazioni complesse e a più livelli.
- Tutti i casi d'uso che richiedono prestazioni coerenti con up-to-date insights.
Quando si crea una vista materializzata in un Databricks SQL warehouse, viene creata una pipeline serverless per elaborare la creazione e l'aggiornamento della vista materializzata. È possibile monitorare lo stato delle operazioni di aggiornamento in Esplora cataloghi. Vedere Visualizzare i dettagli della visualizzazione materializzata con DESCRIBE EXTENDED
.
Requisiti
Le viste materializzate create in Databricks SQL sono supportate da una pipeline serverless. L'area di lavoro deve supportare le pipeline serverless per usare questa funzionalità.
Requisiti per creare o aggiornare viste materializzate:
È necessario utilizzare un SQL warehouse abilitato per il catalogo Unity, pro o serverless.
Per aggiornare una vista materializzata, è necessario trovarsi nell'area di lavoro che l'ha creata.
Per aggiornare in modo incrementale una vista materializzata dalle tabelle Delta, è necessario che nelle tabelle di origine sia abilitato il rilevamento delle righe.
Il proprietario (l'utente che crea la vista materializzata) deve disporre delle autorizzazioni seguenti:
- Privilegio
SELECT
sulle tabelle di base a cui fa riferimento la vista materializzata. - Privilegi
USE CATALOG
eUSE SCHEMA
per il catalogo e lo schema contenenti le tabelle di origine per la vista materializzata. - Privilegi
USE CATALOG
eUSE SCHEMA
sul catalogo e sullo schema di destinazione per la vista materializzata. - Privilegi
CREATE TABLE
eCREATE MATERIALIZED VIEW
sullo schema contenente la vista materializzata.
- Privilegio
Per aggiornare una vista materializzata, è necessario disporre del
REFRESH
privilegio per la vista materializzata.
- L'area di lavoro deve trovarsi in una regione che supporta i warehouse SQL senza server.
Requisiti per eseguire query sulle viste materializzate:
È necessario essere il proprietario della vista materializzata o avere
SELECT
nella vista materializzata, insieme ai relativi elementi padreUSE SCHEMA
eUSE CATALOG
.È necessario usare una delle risorse di calcolo seguenti:
Magazzino SQL
Interfacce delle pipeline dichiarative di Lakeflow
Calcolo in modalità di accesso standard (in precedenza modalità di accesso condiviso)
Modalità di accesso dedicato (in precedenza modalità di accesso utente singolo) in Databricks Runtime 15.4 e versioni successive, purché l'area di lavoro sia abilitata per il calcolo serverless. Vedere Controllo di accesso con granularità fine in calcolo dedicato.
Se si è il proprietario della vista materializzata, è possibile usare una risorsa di calcolo in modalità di accesso dedicata che esegue Databricks Runtime tra 14.3 e versioni successive.
Per informazioni su altre restrizioni sull'uso di viste materializzate, si veda Limitazioni.
Creare una vista materializzata
Le operazioni CREATE
di visualizzazione materializzata di Databricks SQL utilizzano un warehouse di Databricks SQL per creare e caricare i dati nella visualizzazione materializzata. La creazione di una vista materializzata è un'operazione sincrona, il che significa che il comando CREATE MATERIALIZED VIEW
si blocca fino a quando non viene creata la vista materializzata e il caricamento iniziale dei dati termina. Viene creata automaticamente una pipeline serverless per ogni vista SQL materializzata di Databricks. Quando la vista materializzata viene aggiornata , Lakeflow Declarative Pipelines elabora l'aggiornamento.
Per creare una vista materializzata, usare l'istruzione CREATE MATERIALIZED VIEW
. Per inviare un'istruzione CREATE, usare l'editor SQL nell'interfaccia utente di Azure Databricks, l'interfaccia della riga di comando SQL di Databricks o l'API SQL di Databricks.
L'utente che crea una vista materializzata è il proprietario della visualizzazione materializzata.
L'esempio seguente crea la vista materializzata mv1
dalla tabella di base base_table1
.
-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Quando si crea una vista materializzata usando l'istruzione CREATE OR REPLACE MATERIALIZED VIEW
, l'aggiornamento dei dati iniziale e il popolamento iniziano immediatamente. Questo non utilizza il calcolo di SQL Warehouse. Al contrario, le pipeline dichiarative di Lakeflow serverless vengono usate per la creazione e gli aggiornamenti successivi.
I commenti delle colonne di una tabella di base vengono propagati automaticamente alla nuova vista materializzata solo al momento della creazione. Per aggiungere una pianificazione, vincoli di tabella o altre proprietà, modificare la definizione della vista materializzata (la query SQL).
La stessa istruzione SQL aggiornerà una vista materializzata se viene chiamata un'ora successiva o in base a una pianificazione. Un aggiornamento eseguito in questo modo funge da qualsiasi altro aggiornamento. Per informazioni dettagliate, vedere Aggiornare una vista materializzata.
Per altre informazioni sulla configurazione di una vista materializzata, vedere Configurare viste materializzate in Databricks SQL. Per informazioni sulla sintassi completa per la creazione di una vista materializzata, vedere CREATE MATERIALIZED VIEW. Per informazioni sul caricamento dei dati in formati diversi e da posizioni diverse, vedere Caricare dati con pipeline dichiarative di Lakeflow.
Caricare dati da sistemi esterni
Databricks consiglia di caricare dati esterni usando la Federazione Lakehouse per le origini dati supportate. Per informazioni sul caricamento di dati da origini non supportate dalla federazione lakehouse, si veda Opzioni di formato dati. Per informazioni generali sul caricamento dei dati, inclusi esempi, vedere Caricare dati con pipeline dichiarative di Lakeflow.
Nascondere i dati sensibili
Importante
Questa funzionalità è in Anteprima Pubblica.
È possibile usare viste materializzate per nascondere i dati sensibili agli utenti che accedono alla tabella. Un modo per eseguire questa operazione consiste nel creare la query in modo che non includa i dati al primo posto. Ma è anche possibile mascherare le colonne o filtrare le righe in base alle autorizzazioni dell'utente che esegue query. Ad esempio, è possibile nascondere la tax_id
colonna per gli utenti che non si trovano nel gruppo HumanResourcesDept
. A tale scopo, usare la sintassi ROW FILTER
e MASK
durante la creazione della vista materializzata. Per altre informazioni, vedere Filtrare i dati delle tabelle sensibili usando filtri di riga e maschere di colonna.
Aggiornare una vista materializzata
L'aggiornamento di una vista materializzata aggiorna la visualizzazione in modo da riflettere le modifiche più recenti alla tabella di base al momento dell'aggiornamento.
Quando si definisce una vista materializzata, l'istruzione CREATE OR REPLACE MATERIALIZED VIEW
viene usata sia per creare la vista che per aggiornarla per eventuali aggiornamenti pianificati. È anche possibile usare l'istruzione REFRESH MATERIALIZED VIEW
per aggiornare la vista materializzata senza dover fornire di nuovo la query. Vedere REFRESH (MATERIALIZED VIEW o STREAMING TABLE) per informazioni dettagliate sulla sintassi e sui parametri SQL per questo comando. Per altre informazioni sui tipi di viste materializzate che possono essere aggiornate in modo incrementale, vedere Aggiornamento incrementale per le viste materializzate.
Per inviare un'istruzione di aggiornamento, utilizzare l'editor SQL nell'interfaccia utente di Azure Databricks, un notebook collegato a un warehouse SQL, l’interfaccia utente della ria di comando Databricks SQL o l'API Databricks SQL.
Il proprietario e qualsiasi utente a cui è stato concesso il REFRESH
privilegio sulla tabella può aggiornare la vista materializzata.
Nell'esempio seguente viene aggiornata la vista materializzata mv1
:
REFRESH MATERIALIZED VIEW mv1;
L'operazione è sincrona per impostazione predefinita, ovvero il comando si blocca fino al completamento dell'operazione di aggiornamento. Per aggiornare in modo asincrono, è possibile aggiungere la ASYNC
parola chiave :
REFRESH MATERIALIZED VIEW mv1 ASYNC;
Come vengono aggiornate le viste materializzate di Databricks SQL?
Le viste materializzate creano e usano automaticamente pipeline dichiarative di Lakeflow serverless per elaborare le operazioni di aggiornamento. Il rinfresco è gestito dalla pipeline e l'aggiornamento viene monitorato dal Databricks SQL Warehouse usato per creare la vista materializzata. Le viste materializzate possono essere aggiornate usando una pipeline eseguita a intervalli pianificati. Le viste materializzate create da Databricks SQL vengono sempre eseguite in modalità di attivazione automatica. Consultare Triggered vs. continuous pipeline mode (Modalità pipeline attivata e continua).
Le viste materializzate vengono aggiornate usando uno dei due metodi.
- Aggiornamento incrementale : il sistema valuta la query della vista per identificare le modifiche apportate dopo l'ultimo aggiornamento e unisce solo i dati nuovi o modificati.
- Aggiornamento completo : se non è possibile eseguire un aggiornamento incrementale, il sistema esegue l'intera query e sostituisce i dati esistenti nella vista materializzata con i nuovi risultati.
La struttura della query e il tipo di dati di origine determinano se è supportato l'aggiornamento incrementale. Per supportare l'aggiornamento incrementale, i dati di origine devono essere archiviati nelle tabelle Delta, con il rilevamento delle righe e il feed di dati delle modifiche abilitato. Dopo aver creato una vista materializzata, è possibile monitorarne il comportamento di aggiornamento per verificare se viene aggiornato in modo incrementale o tramite un aggiornamento completo.
Per informazioni dettagliate sui tipi di aggiornamento e su come ottimizzare gli aggiornamenti incrementali, vedere Aggiornamento incrementale per le viste materializzate.
Aggiornamenti asincroni
Per impostazione predefinita, le operazioni di aggiornamento vengono eseguite in modo sincrono. È anche possibile impostare un'operazione di aggiornamento in modo asincrono. Questo può essere impostato usando il comando refresh con la ASYNC
parola chiave . Vedere REFRESH (MATERIALIZED VIEW o STREAMING TABLE) Il comportamento associato a ogni approccio è il seguente:
- Sincrono: un aggiornamento sincrono impedisce ad altre operazioni di procedere fino al completamento dell'aggiornamento. Se il risultato è necessario per il passaggio successivo, ad esempio quando si sequenziano le operazioni di aggiornamento in strumenti di orchestrazione come Lakeflow Jobs, usare un aggiornamento sincrono. Per orchestrare le viste materializzate con un job, usare il tipo di operazione SQL. Consulta Attività di Lakeflow.
- Asincrono: un aggiornamento asincrono avvia un processo in background nel calcolo delle pipeline dichiarative di Lakeflow all'inizio di un aggiornamento materializzato della vista, consentendo al comando di tornare prima del completamento del caricamento dei dati. Questo tipo di aggiornamento può risparmiare sui costi perché l'operazione non mantiene necessariamente la capacità di calcolo nel magazzino in cui viene avviato il comando. Se l'aggiornamento diventa inattivo e nessun'altra attività è in esecuzione, il warehouse può arrestarsi mentre l'aggiornamento usa altre risorse di calcolo disponibili. Inoltre, gli aggiornamenti asincroni supportano l'avvio di più operazioni in parallelo.
Pianificare il refresh delle viste materializzate.
È possibile configurare una vista materializzata di Databricks SQL per l'aggiornamento automatico in base a una pianificazione definita. Per impostare una pianificazione, eseguire una delle seguenti operazioni:
- Configurare la pianificazione con la clausola
SCHEDULE
quando si crea la vista materializzata - Aggiungere una pianificazione con l'istruzione ALTER MATERIALIZED VIEW.
Annotazioni
In alternativa, è possibile creare un'attività in un processo che includa l'istruzione CREATE OR REPLACE MATERIALIZED VIEW
o REFRESH
e orchestrarla come qualsiasi altro processo. Consulta Attività di Lakeflow.
Nell'esempio seguente viene creata la vista mv1
materializzata dalla tabella base_table1
di base e una pianificazione per aggiornare la vista materializzata una volta all'ora:
CREATE OR REPLACE MATERIALIZED VIEW mv1
SCHEDULE EVERY 1 hour
AS SELECT
date,
sum(sales) AS sum_of_sales
FROM
base_table1
GROUP BY
date;
Per impostare o modificare la pianificazione dopo la creazione, usare l'istruzione ALTER MATERIALIZED VIEW
:
ALTER MATERIALIZED VIEW sales ALTER SCHEDULE EVERY 1 day;
Quando viene creata una pianificazione, un nuovo processo di Databricks viene configurato automaticamente per elaborare l'aggiornamento.
Per visualizzare una pianificazione, eseguire una delle seguenti operazioni:
- Eseguire l'istruzione
DESCRIBE EXTENDED
dall'editor SQL nell'interfaccia utente di Azure Databricks. Vedi DESCRIBE TABLE. - Usare Catalog Explorer per visualizzare la vista materializzata. La pianificazione è elencata nella scheda Panoramica, sotto Stato aggiornamento. Vedere Che cos'è Catalog Explorer?.
Quando è prevista una pianificazione per gli aggiornamenti, è comunque possibile eseguire un aggiornamento manuale in qualsiasi momento, se sono necessari dati aggiornati.
Fermare un aggiornamento attivo
Per arrestare un aggiornamento attivo nell'interfaccia utente di Lakeflow Declarative Pipelines, nella pagina Dettagli pipeline fare clic su Arresta per arrestare l'aggiornamento della pipeline. È anche possibile arrestare l'aggiornamento con l'interfaccia della riga di comando di Databricks o l'operazione POST /api/2.0/pipelines/{pipeline_id}/stop nell'API Pipeline.
Eliminare definitivamente i record da una vista materializzata con vettori di eliminazione abilitati
Importante
Il supporto della dichiarazione REORG
con viste materializzate è disponibile in anteprima pubblica.
Annotazioni
- L'utilizzo di un'istruzione
REORG
con una vista materializzata richiede Databricks Runtime 15.4 e versioni successive. - Sebbene sia possibile usare l'istruzione
REORG
con qualsiasi vista materializzata, è necessaria solo quando si eliminano record da una vista materializzata con vettori di eliminazione abilitati. Il comando non ha alcun effetto quando viene usato con una vista materializzata senza vettori di eliminazione abilitati.
Per eliminare fisicamente i record dall'archiviazione sottostante per una visualizzazione materializzata con vettori di eliminazione abilitati, ad esempio per la conformità al GDPR, è necessario eseguire ulteriori passaggi per garantire che un'operazione VACUUM venga eseguita sui dati della vista materializzata.
Per eliminare fisicamente i record:
- Eseguire un'istruzione
REORG
sulla vista materializzata, specificando il parametroAPPLY (PURGE)
. Ad esempio,REORG TABLE <materialized-view-name> APPLY (PURGE);
. Vedi REORG TABLE. - Attendere il passaggio del periodo di conservazione dei dati della vista materializzata. Il periodo di conservazione dei dati predefinito è di sette giorni, ma può essere configurato con la proprietà della tabella
delta.deletedFileRetentionDuration
. Vedere Configurare la conservazione dei dati per le query di spostamento cronologico. -
REFRESH
la vista materializzata. Consultare Aggiornare una vista materializzata. Entro 24 ore dall'operazioneREFRESH
, le attività di manutenzione di Lakeflow Declarative Pipelines, inclusa l'operazioneVACUUM
necessaria per garantire che i record vengano eliminati definitivamente, vengono eseguiti automaticamente.
Eliminare una vista materializzata
Annotazioni
Per inviare il comando per eliminare una vista materializzata, è necessario essere il proprietario di tale vista materializzata o disporre del privilegio MANAGE
nella vista materializzata.
Per eliminare una vista materializzata, usare l'istruzione DROP VIEW. Per inviare un'istruzione DROP
, utilizzare l'editor SQL nell'interfaccia utente di Azure Databricks, l’interfaccia utente della riga di comando di Databricks SQL o l'API Databricks SQL. L'esempio seguente elimina la vista materializzata mv1
:
DROP MATERIALIZED VIEW mv1;
È anche possibile usare Esplora cataloghi per eliminare una vista materializzata.
- Fare clic
Catalogo nella barra laterale.
- Nel riquadro di esplorazione dei cataloghi a sinistra, aprite il catalogo e selezionate lo schema in cui si trova la vista materializzata.
- Aprire l'elemento tabelle sotto lo schema selezionato e fare clic sulla vista materializzata.
-
selezionare Elimina.
Comprendere i costi di una vista materializzata
Poiché una vista materializzata viene eseguita in modalità serverless, al di fuori del calcolo che configuri per un notebook o un job, potresti chiederti come comprendere i costi associati. L'utilizzo delle visualizzazioni materializzate è monitorato dal consumo di DBU. Per altre informazioni, vedere Che cos'è il consumo DBU di una vista materializzata o di una tabella di streaming?
Abilitazione del rilevamento delle righe
Per supportare gli aggiornamenti incrementali dalle tabelle Delta, è necessario abilitare il rilevamento delle righe per tali tabelle di origine. Se si ricrea una tabella di origine, è necessario riabilitare il rilevamento delle righe.
Nell'esempio seguente viene illustrato come abilitare il rilevamento delle righe in una tabella:
ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);
Per altre informazioni, vedere Usare il rilevamento delle righe per le tabelle Delta
Limitazioni
- Per i requisiti dell’ambiente di calcolo e dell'area di lavoro, si veda Requisiti.
- Per i requisiti di aggiornamento incrementale, vedere Aggiornamento incrementale per le viste materializzate.
- Le viste materializzate non supportano colonne di identità o chiavi surrogate.
- Se in una vista materializzata viene utilizzata un'aggregazione di somma su una colonna
NULL
-abile e rimangono solo i valoriNULL
in quella colonna, il valore di aggregazione risultante delle viste materializzate è zero anzichéNULL
. - Non è possibile leggere un feed di dati delle modifiche da una vista materializzata.
- Le interrogazioni sui viaggi nel tempo non sono supportate nelle viste materializzate.
- I file sottostanti che supportano le viste materializzate potrebbero includere dati provenienti da tabelle a monte ( comprendenti possibili informazioni di identificazione personale) che non compaiono nella definizione della vista materializzata. Questi dati vengono aggiunti automaticamente all'archivio sottostante per supportare l'aggiornamento incrementale delle viste materializzate. Poiché i file sottostanti di una vista materializzata potrebbero rischiare di esporre dati da tabelle upstream non incluse nello schema della vista materializzata, Databricks consiglia di non condividere l'archiviazione sottostante con consumer downstream non attendibili. Si supponga, ad esempio, che la definizione di una vista materializzata includa una clausola
COUNT(DISTINCT field_a)
. Anche se la definizione della vista materializzata include solo la clausola di aggregazioneCOUNT DISTINCT
, i file sottostanti conterranno un elenco dei valori effettivi difield_a
. - È possibile che vengano addebitati alcuni addebiti di calcolo serverless, anche quando si usano queste funzionalità in un ambiente di calcolo dedicato.
- Se è necessario usare una connessione Private Link di Azure con la vista materializzata, contattare il rappresentante di Databricks.