MATERIALIZÁLT NÉZET LÉTREHOZÁSA
A következőkre vonatkozik: Databricks SQL
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
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. 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. Minden materializált nézetet egy DLT-folyamat készít. A materializált nézeteket manuálisan, ütemezés szerint, vagy annak a DLT-folyamatnak az ütemezésével frissítheti, amelyben azok találhatók.
Syntax
CREATE MATERIALIZED VIEW [IF NOT EXISTS]
view_name
[ column_list ]
[ view_clauses ]
AS query
column_list
( { column_name [ MASK clause ] [...] } [, ...] )
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] |
WITH { ROW FILTER clause } } [...]
Paraméterek
HA NEM LÉTEZIK
Létrehozza a nézetet, ha nem létezik. Ha már létezik ilyen nevű nézet, a rendszer figyelmen kívül hagyja az
CREATE VIEW
utasítást.Legfeljebb egyet
IF NOT EXISTS
OR REFRESH
vagy egyet adhat meg.-
Az újonnan létrehozott nézet neve. A teljes nézetnévnek egyedinek kell lennie.
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.
-
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Oszlopmaszk-függvényt ad hozzá a bizalmas adatok anonimizálásához. Az oszlop minden jövőbeli lekérdezése megkapja a függvény kiértékelésének eredményét az oszlopon az oszlop eredeti értéke helyett. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja az invokáló felhasználó identitását és/vagy csoporttagságát annak eldöntéséhez, hogy újra ki kívánja-e használni az értéket.
-
view_clauses
Opcionálisan megadhatja a particionálást, a megjegyzéseket, a felhasználó által definiált tulajdonságokat és az új materializált nézet frissítési ütemezését. Minden al záradék csak egyszer adható meg.
-
A tábla oszlopainak választható listája a tábla particionálásához.
COMMENT view_comment
A
STRING
táblázatot leíró literál.-
Igény szerint beállíthat egy vagy több felhasználó által definiált tulajdonságot.
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]
Ha meg van adva, ütemezi a streamelési táblát vagy a materializált nézetet, hogy az adatokat a megadott kvarc cron ütemezéssel frissítse. Csak time_zone_values fogadunk el.
AT TIME ZONE LOCAL
nem támogatott. HaAT TIME ZONE
hiányzik, a munkamenet időzónája lesz használatban. HaAT TIME ZONE
hiányzik, és a munkamenet időzónája nincs beállítva, hibaüzenet jelenik meg.SCHEDULE
szemantikailag egyenértékű aSCHEDULE REFRESH
.A szintaxis nem használható a
SCHEDULE
Delta Live Tables folyamatdefiníciójában.WITH ROW FILTER záradék
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Sorszűrő függvényt ad hozzá a táblához. A tábla minden jövőbeli lekérdezése megkapja annak a sornak a részhalmazát, amelynek a függvénye igaz logikai értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja a meghívó felhasználó identitását és/vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.
-
-
Olyan lekérdezés, amely alaptáblákból vagy más nézetekből hozza létre a nézetet.
Szükséges engedélyek
A materializált nézetet (MV) létrehozó felhasználó az MV tulajdonosa, és a következő engedélyekkel kell rendelkeznie:
SELECT
jogosultság az MV által hivatkozott alaptáblák felett.USE CATALOG
jogosultságot a szülőkatalógusban és aUSE SCHEMA
szülőséma jogosultságát.CREATE
jogosultság az MV sémáján.
Ahhoz, hogy a felhasználó frissíthesse az MV-t, a következőre van szüksége:
USE CATALOG
jogosultságot a szülőkatalógusban és aUSE SCHEMA
szülőséma jogosultságát.- Az MV tulajdonjoga vagy
REFRESH
jogosultsága az MV-n. - Az MV tulajdonosának jogosultsággal kell rendelkeznie az
SELECT
MV által hivatkozott alaptáblák felett.
Ahhoz, hogy a felhasználó le tudja kérdezni az MV-t, a következőt kell megkövetelnie:
USE CATALOG
jogosultságot a szülőkatalógusban és aUSE SCHEMA
szülőséma jogosultságát.SELECT
jogosultságot a materializált nézethez.
Sorszűrők és oszlopmaszkok
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
A sorszűrők lehetővé teszik egy olyan függvény megadását, amely szűrőként van alkalmazva, amikor egy táblavizsgálat sorokat olvas be. Ezek a szűrők biztosítják, hogy a későbbi lekérdezések csak olyan sorokat adjanak vissza, amelyek esetében a szűrő predikátum értéke igaz.
Az oszlopmaszkok lehetővé teszik az oszlopok értékeinek maszkolását, amikor egy táblázat beolvassa a sorokat. Az oszlopot érintő minden jövőbeli lekérdezés megkapja a függvény kiértékelésének eredményét az oszlopon, lecserélve az oszlop eredeti értékét.
A sorszűrők és oszlopmaszkok használatáról további információt a bizalmas táblázatadatok szűrése sorszűrők és oszlopmaszkok használatával című témakörben talál.
Sorszűrők és oszlopmaszkok kezelése
A materializált nézetek sorszűrőit és oszlopmaszkjait az CREATE
utasítással kell hozzáadni.
Működés
- Frissítés definiálóként: Amikor az
REFRESH MATERIALIZED VIEW
utasítás materializált nézetet frissít, a sorszűrő függvények a definiáló jogosultságaival (táblatulajdonosként) futnak. Ez azt jelenti, hogy a táblafrissítés a materializált nézetet létrehozó felhasználó biztonsági környezetét használja. - Lekérdezés: Bár a legtöbb szűrő a definiáló jogosultságaival fut, a felhasználói környezetet ellenőrző függvények (például
CURRENT_USER
ésIS_MEMBER
) kivételek. Ezek a függvények meghívóként futnak. Ez a megközelítés a felhasználóspecifikus adatbiztonságot és hozzáférés-vezérlést kényszeríti ki az aktuális felhasználó kontextusa alapján. - Amikor sorszűrőket és oszlopmaszkokat tartalmazó forrástáblákon hoz létre materializált nézeteket, a materializált nézet frissítése mindig teljes frissítés. A teljes frissítés a forrásban elérhető összes adatot a legújabb definíciókkal dolgozza fel újra. Ez biztosítja, hogy a forrástáblák biztonsági szabályzatai a legfrissebb adatokkal és definíciókkal legyenek kiértékelve és alkalmazva.
Megfigyelhetőség
INFORMATION_SCHEMA
A Katalóguskezelővel DESCRIBE EXTENDED
vagy a Katalóguskezelővel megvizsgálhatja azokat a meglévő sorszűrőket és oszlopmaszkokat, amelyek egy adott materializált nézetre vonatkoznak. Ez a funkció lehetővé teszi a felhasználók számára az adathozzáférési és védelmi intézkedések naplózását és felülvizsgálatát a materializált nézeteken.
Korlátozások
- Ha egy null értékű oszlopon aggregátummal rendelkező
sum
materializált nézet az utolsó nem NULL értéket távolítja el az oszlopból – és így csakNULL
az értékek maradnak az oszlopban –, akkor a materializált nézet eredményül kapott összesített értéke nem a nullát, hanemNULL
a nullát adja vissza. - 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:
- 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 az alkalmi
OPTIMIZE
ésVACUUM
a parancsokat. A karbantartás automatikusan történik. - A materializált nézetek nem támogatják az olyan táblakorlátozásokat, mint az
PRIMARY KEY
ésFOREIGN KEY
a . - A materializált nézetek nem támogatják az adatminőségi korlátozások meghatározására vonatkozó elvárásokat.
Példák
-- 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 row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
id,
name,
region,
ssn MASK catalog.schema.ssn_mask_fn
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT id, name, region, ssn
FROM employees;
Kapcsolódó cikkek
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: