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 ]
[ 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 ] } [...]
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 oszlop aliasainak egyedinek kell lenniük.
column_comment
Az oszlop aliasát leíró nem kötelező
STRING
literál.-
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozást ad hozzá az oszlophoz egy materializált nézetben. A katalógus materializált nézetei nem támogatják a
hive_metastore
korlátozásokat.
-
-
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozásokat ad hozzá egy materializált nézethez. A katalógus materializált nézetei nem támogatják a
hive-metastore
korlátozásokat. 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.
-
-
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.
Csak a tulajdonos használhatja az MV-t REFRESH
.
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.
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ó:
- Engedélyezett:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Nem engedélyezett:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Engedélyezett:
- 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.
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 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;
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: