Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A materializált nézet olyan nézet, ahol előre lefordított eredmények érhetők el a lekérdezéshez, és frissíthetők a bemenet változásainak megfelelően. a materializált nézeteket egy "pipeline" támogatja. Minden alkalommal, amikor egy materializált nézet frissül, a rendszer újraszámítja a lekérdezési eredményeket, hogy tükrözze a felsőbb rétegbeli adathalmazok változásait. A materializált nézeteket manuálisan vagy ütemezés szerint frissítheti.
A frissítések végrehajtásáról és ütemezéséről további információt a Folyamatfrissítés futtatása című témakörben talál.
Szemantika
CREATE [OR REFRESH] [PRIVATE] MATERIALIZED VIEW
view_name
[ column_list ]
[ view_clauses ]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ column_constraint ] [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ USING DELTA |
PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT view_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [...]
Paraméterek
REFRESH
Ha meg van adva, létrehozza a nézetet, vagy frissít egy meglévő nézetet és annak tartalmát.
PRIVÁT
Létrehoz egy privát materializált nézetet. A privát materializált nézet hasznos lehet köztes táblaként egy olyan folyamaton belül, amelyet nem szeretne közzétenni a katalógusban.
- Ezek nem lettek hozzáadva a katalógushoz, és csak a definiáló folyamaton belül érhetők el
- Ugyanazzal a névvel rendelkezhetnek, mint egy meglévő objektum a katalógusban. A folyamaton belül, ha egy privát materializált nézet és egy katalógusbeli objektum neve megegyezik, a névre mutató hivatkozások feloldódnak a privát materializált nézetre.
- A privát materializált nézetek az adatfolyam teljes élettartama alatt megmaradnak, nem csak egyetlen frissítés során.
A privát materializált nézetek korábban a paraméterrel
TEMPORARYlettek létrehozva.nézet_név
Az újonnan létrehozott nézet neve. A teljes nézetnévnek egyedinek kell lennie.
A privát materializált nézetek neve megegyezhet a katalógusban közzétett objektum nevével.
column_list
Igény szerint címkézheti a nézet lekérdezési eredményében szereplő oszlopokat. Ha oszloplistát ad meg, az oszlop aliasainak számának meg kell egyeznie a lekérdezésben szereplő kifejezések számával. Ha nincs megadva oszloplista, az aliasok a nézet törzséből származnak.
-
Az oszlopneveknek egyedinek kell lenniük, és le kell képezniük a lekérdezés kimeneti oszlopait.
oszlop_típus
Megadja az oszlop adattípusát. Az Azure Databricks által támogatott adattípusokat nem támogatják a materializált nézetek.
column_comment
Egy tetszőleges
STRINGliterál, amely az oszlopot írja le. Ezt a beállítást a beállítássalcolumn_typeegyütt kell megadni. Ha az oszloptípus nincs megadva, a program kihagyja az oszlop megjegyzését.-
Kényszert ad hozzá, amely érvényesíti az adatokat, amint a táblába kerülnek. Lásd: Adatminőség kezelése folyamatelvárásokkal.
-
Fontos
Ez a funkció nyilvános előzetes verzióban van.
Olyan oszlopmaszk funkciót ad hozzá, amely lehetővé teszi a bizalmas adatok anonimizálását. Lásd: Sorszűrők és oszlopmaszkok.
-
tábla_korlátozás
Fontos
Ez a funkció nyilvános előzetes verzióban van.
Séma megadásakor megadhatja az elsődleges és az idegen kulcsokat. A korlátozások tájékoztató jellegűek, és nincsenek kényszerítve. Tekintse meg a CONSTRAINT záradékot az SQL nyelvi hivatkozásában.
Megjegyzés:
A táblakorlátozások meghatározásához a folyamatnak Unity Catalog-kompatibilis folyamatnak kell lennie.
view_clauses
A materializált nézet particionálási, megjegyzési és felhasználó által definiált tulajdonságait is megadhatja. Minden al záradék csak egyszer adható meg.
A DELTA HASZNÁLATA
Megadja az adatformátumot. Az egyetlen lehetőség a DELTA.
Ez a záradék opcionális, és alapértelmezés szerint a DELTA értéket veszi fel.
PARTÍCIÓVAL
A tábla particionálásához használandó egy vagy több oszlop választható listája. Kölcsönösen kizárja egymást a
CLUSTER BY-vel.A folyékony klaszterezés rugalmas, optimalizált megoldást biztosít a csoportosításhoz. Fontolja meg a
CLUSTER BYhasználatátPARTITIONED BYhelyett a folyamatvezetékek számára.CLUSTER BY
Engedélyezze a "liquid clustering" funkciót a táblában, és határozza meg a fürtözési kulcsként használni kívánt oszlopokat. Használjon automatikus folyékony fürtözést,
CLUSTER BY AUTOés a Databricks intelligensen választja ki a fürtözési kulcsokat a lekérdezési teljesítmény optimalizálásához. Kölcsönösen kizárja egymást aPARTITIONED BY-vel.HELYSZÍN
A táblaadatok opcionális tárolási helye. Ha nincs beállítva, a rendszer alapértelmezés szerint a folyamat tárolási helyére kerül.
Ez a beállítás csak a Hive metaadattárban való közzétételkor érhető el. A Unity Catalogban a rendszer automatikusan kezeli a helyet.
MEGJEGYZÉS
A táblázat opcionális leírása.
TBLPROPERTIES
A tábla táblatulajdonságainak választható listája.
VAL ROW FILTER
Fontos
Ez a funkció nyilvános előzetes verzióban van.
Sorszűrő függvényt ad hozzá a táblához. A tábla jövőbeli lekérdezései azoknak a soroknak a részhalmazát kapják meg, amelyekre a függvény IGAZ értéket ad. Ez a részletes hozzáférés-vezérléshez hasznos, mert lehetővé teszi, hogy a függvény megvizsgálja a behívó felhasználó identitását és csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.
Lásd
ROW FILTERzáradék.query
A tábla adatkészletét meghatározó lekérdezés.
Szükséges engedélyek
A folyamat futtató felhasználójának a következő engedélyekkel kell rendelkeznie:
-
SELECTjogosultság a materializált nézet által hivatkozott alaptáblák felett. -
USE CATALOGjogosultsággal a szülőkatalóguson, valamintUSE SCHEMAjogosultsággal a szülősémán. -
CREATE MATERIALIZED VIEWjogosultság a materializált nézet sémájára.
Ahhoz, hogy a felhasználó frissíthesse azt a folyamatot, amelyen belül a materializált nézet van meghatározva, a következőkre van szüksége:
-
USE CATALOGjogosultsággal a szülőkatalóguson, valamintUSE SCHEMAjogosultsággal a szülősémán. - A materializált nézet tulajdonjoga vagy
REFRESHjogosultsága a materializált nézetre. - A materializált nézet tulajdonosának jogosultsággal kell rendelkeznie a
SELECTmaterializált nézet által hivatkozott alaptáblák felett.
Ahhoz, hogy a felhasználó le tudja kérdezni az eredményként kapott materializált nézetet, a következőt kell megkövetelnie:
-
USE CATALOGjogosultsággal a szülőkatalóguson, valamintUSE SCHEMAjogosultsággal a szülősémán. -
SELECTjogosultságot a materializált nézet felett.
Korlátozások
- Ha egy materializált nézet, amely
sumagregátumot tartalmaz egy NULL értékeket is megengedő oszlopban, eltávolítja az oszlopból az utolsó nem-null értéket, és így az oszlopban csakNULLértékek maradnak, akkor a materializált nézet összesített eredménye nullát ad vissza, nem pedigNULL. - Az oszlophivatkozás nem igényel aliast. A nem oszlopos hivatkozási kifejezésekhez alias szükséges, ahogyan az alábbi példában is látható:
- Megengedett:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1 - Tilos:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Megengedett:
- Ahhoz, hogy érvényes utasítást kapjunk, a(z)
NOT NULL-t manuálisan meg kell adni a(z)PRIMARY KEYmellett. - A materializált nézetek nem támogatják az identitásoszlopokat és a helyettesítő kulcsokat.
- A materializált nézetek nem támogatják
OPTIMIZEésVACUUMparancsokat. A karbantartás automatikusan történik. - A tábla átnevezése vagy a tulajdonos megváltoztatása nem támogatott.
- A létrehozott oszlopok, identitásoszlopok és alapértelmezett oszlopok nem támogatottak.
Példák
-- Create a materialized view by reading from an external data source, using the default schema:
CREATE OR REFRESH MATERIALIZED VIEW taxi_raw
AS SELECT * FROM read_files("/databricks-datasets/nyctaxi/sample/json/")
-- Create a materialized view by reading from a dataset defined in a pipeline:
CREATE OR REFRESH MATERIALIZED VIEW filtered_data
AS SELECT
...
FROM taxi_raw
-- Specify a schema and clustering columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) CLUSTER BY (order_day_of_week, customer_id)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify partition columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) PARTITIONED BY (order_day_of_week)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a primary and foreign key constraint for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING NOT NULL PRIMARY KEY,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime)),
CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES main.default.customers(customer_id)
)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a row filter and mask clause for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales (
customer_id STRING MASK catalog.schema.customer_id_mask_fn,
customer_name STRING,
number_of_line_items STRING COMMENT 'Number of items in the order',
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
)
COMMENT "Raw data on sales"
WITH ROW FILTER catalog.schema.order_number_filter_fn ON (order_number)
AS SELECT * FROM sales_bronze