Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. Materialiserade vyer stöds av en pipeline. Varje gång en materialiserad vy uppdateras beräknas frågeresultaten om för att återspegla ändringar i överordnade datamängder. Du kan uppdatera materialiserade vyer manuellt eller enligt ett schema.
Mer information om hur du utför eller schemalägger uppdateringar finns i Köra en pipelineuppdatering.
Syntax
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 } } [...]
Parameterar
REFRESH
Om det anges skapar du vyn eller uppdaterar en befintlig vy och dess innehåll.
PRIVAT
Skapar en privat materialiserad vy. En privat materialiserad vy kan vara användbar som en mellanliggande tabell i en pipeline som du inte vill ska publiceras i katalogen.
- De läggs inte till i katalogen och är endast tillgängliga i den definierande pipelinen
- De kan ha samma namn som ett befintligt objekt i katalogen. Inom pipelinen, om en privat materialiserad vy och ett objekt i katalogen har samma namn, kommer referenser till namnet att härledas till den privata materialiserade vyn.
- Privata materialiserade vyer sparas bara under pipelinens livslängd, inte bara en enda uppdatering.
Privata materialiserade vyer skapades tidigare med parametern
TEMPORARY.view_name
Namnet på den nyligen skapade vyn. Det fullständigt kvalificerade vynamn måste vara unikt.
Privata materialiserade vyer kan ha samma namn som ett objekt som publiceras i katalogen.
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.
-
Kolumnnamnen måste vara unika och mappas till frågans utdatakolumner.
kolumntyp
Specificerar kolumnens datatyp. Alla datatyper som stöds av Azure Databricks stöds inte av materialiserade vyer.
column_comment
En valfri
STRING-literal som beskriver kolumnen. Det här alternativet måste anges tillsammans medcolumn_type. Om kolumntypen inte har angetts hoppas kolumnkommenteringen över.-
Lägger till en begränsning som validerar data när de flödar in i tabellen. Se avsnittet Hantera datakvalitet med pipeline-förväntningar.
-
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en kolumnmaskfunktion för att anonymisera känsliga data. Se Radfilter och kolumnmasker.
-
tabellbegränsning
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
När du anger ett schema kan du definiera primära och externa nycklar. Begränsningarna är informationsmässiga och tillämpas inte. CONSTRAINT Se satsen i SQL-språkreferensen.
Anmärkning
För att definiera tabellbegränsningar måste pipelinen vara en Unity Catalog-aktiverad pipeline.
view_clauses
Du kan också ange partitionering, kommentarer och användardefinierade egenskaper för den materialiserade vyn. Varje undersats kan endast anges en gång.
ANVÄNDA DELTA
Anger dataformatet. Det enda alternativet är DELTA.
Den här satsen är valfri och är standard för DELTA.
Partitionerad efter
En valfri lista över en eller flera kolumner som ska användas för partitionering i tabellen. Ömsesidigt uteslutande med
CLUSTER BY.Flytande klustring ger en flexibel, optimerad lösning för klustring. Överväg att använda
CLUSTER BYi stället förPARTITIONED BYför pipelines.CLUSTER BY
Aktivera flytande klustring i tabellen och definiera de kolumner som ska användas som klustringsnycklar. Använd automatisk flytande klustring med
CLUSTER BY AUTO, och Databricks väljer intelligent klustringsnycklar för att optimera frågeprestanda. Ömsesidigt uteslutande medPARTITIONED BY.PLATS
En valfri lagringsplats för tabelldata. Om det inte anges kommer systemet att välja pipelinelagringsplatsen som standardinställning.
Det här alternativet är endast tillgängligt när du publicerar till Hive-metaarkivet. I Unity Catalog hanteras platsen automatiskt.
KOMMENTAR
En valfri beskrivning för tabellen.
TBLPROPERTIES
En valfri lista över tabellegenskaper för tabellen.
MED ROW FILTER
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en radfilterfunktion i tabellen. Framtida frågor för tabellen tar emot en delmängd av de rader som funktionen utvärderas till TRUE för. Detta är användbart för detaljerad åtkomstkontroll eftersom den gör att funktionen kan kontrollera identitets- och gruppmedlemskapen för den anropande användaren för att avgöra om vissa rader ska filtreras.
fråga
En fråga som definierar datauppsättningen för tabellen.
Behörigheter som krävs
Kör som-användaren för en pipeline måste ha följande behörigheter:
-
SELECTbehörighet över de bastabeller som refereras till av den materialiserade vyn. -
USE CATALOGbehörighet i den överordnade katalogen ochUSE SCHEMAbehörighet i det överordnade schemat. -
CREATE MATERIALIZED VIEWbehörighet för schemat för den materialiserade vyn.
För att en användare ska kunna uppdatera pipelinen, krävs det att den materialiserade vyn definieras inom vilken:
-
USE CATALOGbehörighet i den överordnade katalogen ochUSE SCHEMAbehörighet i det överordnade schemat. - Ägarskap för den materialiserade vyn eller
REFRESHbehörigheten i den materialiserade vyn. - Ägaren av den materialiserade vyn måste ha behörigheten
SELECTöver bastabellerna som refereras till av den materialiserade vyn.
För att en användare ska kunna fråga den resulterande materialiserade vyn behöver de:
-
USE CATALOGbehörighet i den överordnade katalogen ochUSE SCHEMAbehörighet i det överordnade schemat. -
SELECTbehörighet över den materialiserade vyn.
Begränsningar
- När en materialiserad vy med en
sumaggregering över en NULL-kapabel kolumn har det sista icke-NULL-värdet borttaget från den kolumnen – och därmed endastNULLvä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åten:
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åten:
-
NOT NULLmåste anges manuellt tillsammans medPRIMARY KEYför att vara en giltig instruktion. - Materialiserade vyer stöder inte identitetskolumner eller surrogatnycklar.
- Materialiserade vyer stöder inte kommandon för
OPTIMIZEochVACUUM. Underhåll sker automatiskt. - Det går inte att byta namn på tabellen eller ändra ägaren.
- Genererade kolumner, identitetskolumner och standardkolumner stöds inte.
Examples
-- 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