CREATE MATERIALIZED VIEW
Si applica a: Databricks SQL
Importante
Questa funzionalità è disponibile in anteprima pubblica. Per iscriversi per l'accesso, compilare questo modulo.
Una vista materializzata è una vista in cui i risultati precompilate sono disponibili per la query e possono essere aggiornati in modo da riflettere le modifiche nell'input. Ogni volta che viene aggiornata una vista materializzata, i risultati delle query vengono ricalcolati per riflettere le modifiche nei set di dati upstream. Tutte le viste materializzate sono supportate da una pipeline DLT. È possibile aggiornare manualmente le viste materializzate, in base a una pianificazione o pianificando la pipeline DLT in cui sono contenute.
Sintassi
CREATE MATERIALIZED VIEW [IF NOT EXISTS]
view_name
[ column_list ]
[ table_constraints ]
[ view_clauses ]
AS query
column_list
( { column_alias [ COMMENT column_comment | column_constraint ] [...] } [, ...] [ , table_constraint ] [...])
table_constraints
( table_constraint [, ...] )
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] } [...]
Parametri
SE NON ESISTE
Crea la vista se non esiste. Se esiste già una vista con questo nome, l'istruzione
CREATE VIEW
viene ignorata.È possibile specificare al massimo uno di
IF NOT EXISTS
oOR REFRESH
.-
Nome della visualizzazione appena creata. Il nome completo della vista deve essere univoco.
column_list
Facoltativamente, etichetta le colonne nel risultato della query della vista. Se si specifica un elenco di colonne, il numero di alias di colonna deve corrispondere al numero di espressioni nella query. Se non viene specificato alcun elenco di colonne, gli alias vengono derivati dal corpo della visualizzazione.
-
Gli alias di colonna devono essere univoci.
column_comment
Valore letterale facoltativo
STRING
che descrive l'alias di colonna.-
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Aggiunge una chiave primaria informativa o un vincolo di chiave esterna informativa alla colonna in una vista materializzata. I vincoli non sono supportati per le viste materializzate nel
hive_metastore
catalogo.
-
-
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Aggiunge una chiave primaria informativa o vincoli di chiave esterna informativa a una vista materializzata. I vincoli non sono supportati per le viste materializzate nel
hive-metastore
catalogo. view_clauses
Facoltativamente, specificare partizionamento, commenti, proprietà definite dall'utente e una pianificazione di aggiornamento per la nuova vista materializzata. Ogni clausola secondaria può essere specificata una sola volta.
-
Elenco facoltativo di colonne della tabella per partizionare la tabella.
COMMENT view_comment
Valore
STRING
letterale per descrivere la tabella.-
Facoltativamente, imposta una o più proprietà definite dall'utente.
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]
Se specificato, pianifica la tabella di streaming o la vista materializzata per aggiornare i dati con la pianificazione cron di quarzi specificata. Vengono accettati solo time_zone_values .
AT TIME ZONE LOCAL
non è supportata. SeAT TIME ZONE
è assente, viene usato il fuso orario della sessione. SeAT TIME ZONE
è assente e il fuso orario della sessione non è impostato, viene generato un errore.SCHEDULE
è semanticamente equivalente aSCHEDULE REFRESH
.Non è possibile usare la
SCHEDULE
sintassi in una definizione di pipeline Delta Live Tables.
-
-
Query che costruisce la vista da tabelle di base o da altre viste.
Autorizzazioni necessarie
L'utente che crea una vista materializzata (MV) è il proprietario MV e deve avere le autorizzazioni seguenti:
SELECT
privilegi sulle tabelle di base a cui fa riferimento la MV.USE CATALOG
privilegio per il catalogo padre e ilUSE SCHEMA
privilegio per lo schema padre.CREATE
privilegio per lo schema per la MV.
Solo il proprietario può il MV REFRESH
.
Affinché un utente sia in grado di eseguire una query sulla MV, è necessario:
USE CATALOG
privilegio per il catalogo padre e ilUSE SCHEMA
privilegio per lo schema padre.SELECT
privilegi sulla vista materializzata.
Limiti
- Quando una vista materializzata con un'aggregazione
sum
su una colonna in grado di valori NULL ha l'ultimo valore non NULL rimosso da tale colonna, pertanto soloNULL
i valori rimangono in tale colonna. Il valore di aggregazione risultante della vista materializzata restituisce zero anzichéNULL
. - Il riferimento a colonne non richiede un alias. Le espressioni di riferimento non di colonna richiedono un alias, come nell'esempio seguente:
- Consentito:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Non consentito:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Consentito:
- Le viste materializzate non supportano colonne Identity o chiavi surrogate.
- Le viste materializzate non supportano comandi e
VACUUM
ad hocOPTIMIZE
. La manutenzione avviene automaticamente.
Esempi
-- Create a materialized view if it doesn't exist
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create and schedule a materialized view to be refreshed daily at midnight.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
COMMENT 'Daily sales numbers'
SCHEDULE CRON '0 0 0 * * ? *'
AS SELECT date AS date, sum(sales) AS sumOfSales
FROM table1
GROUP BY date;
-- Create a materialized view with a column constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id NOT NULL PRIMARY KEY,
full_name,
movie_title
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id NOT NULL,
full_name,
movie_title,
CONSTRAINT movie_pk PRIMARY KEY(member_id)
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create a materialized view without column list
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
CONSTRAINT movie_pk PRIMARY KEY(member_id)
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
Articoli correlati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per