VYTVOŘENÍ MATERIALIZOVANÉHO ZOBRAZENÍ
Platí pro: Databricks SQL
Důležité
Tato funkce je ve verzi Public Preview.
Materializované zobrazení je zobrazení, ve kterém jsou k dispozici předpočítané výsledky pro dotaz a lze je aktualizovat tak, aby odrážely změny ve vstupu. Při každé aktualizaci materializovaného zobrazení se výsledky dotazu přepočítávají tak, aby odrážely změny v nadřazených datových sadách. Všechna materializovaná zobrazení jsou podporována kanálem DLT. Materializovaná zobrazení můžete aktualizovat ručně, podle plánu nebo naplánováním kanálu DLT, ve kterém jsou obsaženy.
Syntaxe
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 ] } [...]
Parametry
POKUD NEEXISTUJE
Vytvoří zobrazení, pokud neexistuje. Pokud zobrazení podle tohoto názvu již existuje,
CREATE VIEW
příkaz se ignoruje.Můžete zadat nejvýše jednu z nebo
IF NOT EXISTS
OR REFRESH
.-
Název nově vytvořeného zobrazení Plně kvalifikovaný název zobrazení musí být jedinečný.
Column_list
Volitelně označí sloupce ve výsledku dotazu zobrazení. Pokud zadáte seznam sloupců, musí se počet aliasů sloupců shodovat s počtem výrazů v dotazu. Pokud není zadaný žádný seznam sloupců, aliasy se odvozují z textu zobrazení.
-
Aliasy sloupců musí být jedinečné.
column_comment
Volitelný
STRING
literál popisující alias sloupce.-
Důležité
Tato funkce je ve verzi Public Preview.
Přidá omezení informačního primárního klíče nebo informačního cizího klíče do sloupce v materializovaném zobrazení. Omezení nejsou podporována pro materializovaná zobrazení v
hive_metastore
katalogu.
-
-
Důležité
Tato funkce je ve verzi Public Preview.
Přidá omezení informačního primárního klíče nebo informačního cizího klíče do materializovaného zobrazení. Omezení nejsou podporována pro materializovaná zobrazení v
hive-metastore
katalogu. view_clauses
Volitelně můžete zadat dělení, komentáře, uživatelem definované vlastnosti a plán aktualizace pro nové materializované zobrazení. Každou dílčí klauzuli lze zadat pouze jednou.
-
Volitelný seznam sloupců tabulky, podle kterých chcete tabulku rozdělit.
VIEW_COMMENT KOMENTÁŘE
Literál
STRING
, který popisuje tabulku.-
Volitelně nastaví jednu nebo více uživatelem definovaných vlastností.
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]
Pokud je k dispozici, naplánuje streamovací tabulku nebo materializované zobrazení, aby aktualizovala data s daným plánem quartz cron . Akceptují se pouze time_zone_values .
AT TIME ZONE LOCAL
není podporováno. PokudAT TIME ZONE
chybí, použije se časové pásmo relace. PokudAT TIME ZONE
chybí a časové pásmo relace není nastavené, vyvolá se chyba.SCHEDULE
je sémanticky ekvivalentníSCHEDULE REFRESH
.Syntaxi nelze použít
SCHEDULE
v definici kanálu Delta Live Tables.
-
-
Dotaz, který sestaví zobrazení ze základních tabulek nebo jiných zobrazení.
Požadována oprávnění
Uživatel, který vytvoří materializované zobrazení (MV), je vlastníkem MV a musí mít následující oprávnění:
SELECT
oprávnění k základním tabulkám, na které odkazuje MV.USE CATALOG
oprávnění nadřazeného katalogu aUSE SCHEMA
oprávnění nadřazeného schématu.CREATE
oprávnění ke schématu MV.
MV může REFRESH
jenom vlastník.
Aby uživatel mohl dotazovat MV, vyžaduje:
USE CATALOG
oprávnění nadřazeného katalogu aUSE SCHEMA
oprávnění nadřazeného schématu.SELECT
oprávnění k materializovanému zobrazení.
Omezení
- Když materializované zobrazení s agregací
sum
nad sloupcem schopným s hodnotou NULL je z tohoto sloupce odebrána poslední hodnota, která není null , a proto pouzeNULL
hodnoty zůstanou v daném sloupci – výsledná agregační hodnota materializovaného zobrazení vrátí nulu místoNULL
. - Odkaz na sloupec nevyžaduje alias. Odkazové výrazy bez sloupců vyžadují alias, jak je znázorněno v následujícím příkladu:
- Povoleno:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Nepovoleno:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Povoleno:
- Materializovaná zobrazení nepodporují sloupce identit ani náhradní klíče.
- Materializovaná zobrazení nepodporují ad hoc
OPTIMIZE
aVACUUM
příkazy. Údržba probíhá automaticky.
Příklady
-- 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;
Související články
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro