SKAPA MATERIALISERAD VY
Gäller för: Databricks SQL
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
En materialiserad vy är en vy där förberäknade resultat är tillgängliga för frågor och kan uppdateras för att återspegla ändringar i indata. Varje gång en materialiserad vy uppdateras beräknas frågeresultaten om för att återspegla ändringar i överordnade datamängder. Alla materialiserade vyer backas upp av en DLT-pipeline. Du kan uppdatera materialiserade vyer manuellt, enligt ett schema eller genom att schemalägga DLT-pipelinen där de finns.
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 ] } [...]
Parametrar
OM INTE FINNS
Skapar vyn om den inte finns. Om det redan finns en vy med det här namnet ignoreras -instruktionen
CREATE VIEW
.Du kan ange högst en av
IF NOT EXISTS
ellerOR REFRESH
.-
Namnet på den nyligen skapade vyn. Det fullständigt kvalificerade vynamnet måste vara unikt.
column_list
Du kan också etikettera kolumnerna i frågeresultatet i vyn. Om du anger en kolumnlista måste antalet kolumnalias matcha antalet uttryck i frågan. Om ingen kolumnlista anges härleds alias från brödtexten i vyn.
-
Kolumnaliasen måste vara unika.
column_comment
En valfri
STRING
literal som beskriver kolumnaliaset.-
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en informations primärnyckel eller informationsnyckelbegränsning i kolumnen i en materialiserad vy. Begränsningar stöds inte för materialiserade vyer i
hive_metastore
katalogen.
-
-
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en informations primärnyckel eller informationsmässiga begränsningar för sekundärnyckeln i en materialiserad vy. Begränsningar stöds inte för materialiserade vyer i
hive-metastore
katalogen. view_clauses
Du kan också ange partitionering, kommentarer, användardefinierade egenskaper och ett uppdateringsschema för den nya materialiserade vyn. Varje undersats kan bara anges en gång.
-
En valfri lista över kolumner i tabellen som tabellen ska partitioneras efter.
KOMMENTAR view_comment
En
STRING
literal för att beskriva tabellen.-
Du kan också ange en eller flera användardefinierade egenskaper.
SCHEMA [ UPPDATERA ] CRON cron_string [ AT TIME ZONE timezone_id ]
Om det tillhandahålls schemalägger du strömningstabellen eller den materialiserade vyn för att uppdatera sina data med det angivna cron-schemat för quartz . Endast time_zone_values accepteras.
AT TIME ZONE LOCAL
stöds inte. OmAT TIME ZONE
den saknas används tidszonen för sessionen. OmAT TIME ZONE
är frånvarande och sessionens tidszon inte har angetts utlöses ett fel.SCHEDULE
är semantiskt likvärdigt medSCHEDULE REFRESH
.Du kan inte använda syntaxen
SCHEDULE
i en pipelinedefinition för Delta Live Tables.
-
-
En fråga som konstruerar vyn från bastabeller eller andra vyer.
Behörigheter som krävs
Användaren som skapar en materialiserad vy (MV) är MV-ägare och måste ha följande behörigheter:
SELECT
över de bastabeller som refereras av MV.USE CATALOG
behörighet för den överordnade katalogen och behörighetenUSE SCHEMA
för det överordnade schemat.CREATE
behörighet i schemat för MV.
Endast ägaren kan REFRESH
MV.
För att en användare ska kunna köra frågor mot MV:en behöver de:
USE CATALOG
behörighet för den överordnade katalogen och behörighetenUSE SCHEMA
för det överordnade schemat.SELECT
behörighet över den materialiserade vyn.
Begränsningar
- När en materialiserad vy med en
sum
aggregering över en NULL-kapabel kolumn har det sista icke-NULL-värdet borttaget från den kolumnen – och därmed endastNULL
värden finns kvar i den kolumnen – returnerar den materialiserade vyns resulterande aggregeringsvärde noll i stället förNULL
. - Kolumnreferens kräver inget alias. Referensuttryck som inte är kolumner kräver ett alias, som i följande exempel:
- Tillåtet:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Tillåts inte:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Tillåtet:
- Materialiserade vyer stöder inte identitetskolumner eller surrogatnycklar.
- Materialiserade vyer stöder inte ad hoc
OPTIMIZE
- ochVACUUM
kommandon. Underhåll sker automatiskt.
Exempel
-- 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;
Relaterade artiklar
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för