Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een gerealiseerde weergave is een weergave waarin vooraf ingevulde resultaten beschikbaar zijn voor query's en kunnen worden bijgewerkt om wijzigingen in de invoer weer te geven. gerealiseerde weergaven worden ondersteund door een pijplijn. Telkens wanneer een gerealiseerde weergave wordt bijgewerkt, worden queryresultaten opnieuw berekend om wijzigingen in upstream-gegevenssets weer te geven. U kunt gematerialiseerde weergaven handmatig bijwerken of volgens een schema.
Zie Een pijplijnupdate uitvoeren voor meer informatie over het uitvoeren of plannen van updates.
Syntaxis
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 } } [...]
Parameterwaarden
REFRESH
Indien opgegeven, maakt u de weergave of werkt u een bestaande weergave en de inhoud ervan bij.
PRIVÉ
Een privé gematerialiseerde weergave wordt aangemaakt. Een privé gerealiseerde weergave kan nuttig zijn als een intermediaire tabel binnen een pijplijn die niet in de catalogus gepubliceerd hoeft te worden.
- Ze worden niet toegevoegd aan de catalogus en zijn alleen toegankelijk binnen de definiërende pijplijn
- Ze kunnen dezelfde naam hebben als een bestaand object in de catalogus. Als in de pijplijn een privé gerealiseerde weergave en een object in de catalogus dezelfde naam hebben, worden verwijzingen naar de naam omgezet in de privé gerealiseerde weergave.
- Privé-gerealiseerde weergaven blijven alleen behouden gedurende de levensduur van de pijplijn, niet slechts één update.
Privé gematerialiseerde weergaven werden eerder gemaakt met de
TEMPORARYparameter.view_name
De naam van de zojuist gemaakte weergave. De volledig gekwalificeerde weergavenaam moet uniek zijn.
Privé-gematerialiseerde weergaven kunnen dezelfde naam hebben als een object dat in de catalogus wordt gepubliceerd.
column_list
U kunt desgewenst de kolommen in het queryresultaat van de weergave labelen. Als u een kolomlijst opgeeft, moet het aantal kolomaliassen overeenkomen met het aantal expressies in de query. Als er geen kolomlijst is opgegeven, worden aliassen afgeleid van de hoofdtekst van de weergave.
-
De kolomnamen moeten uniek zijn en corresponderen met de uitvoerkolommen van de query.
column_type
Hiermee geeft u het gegevenstype van de kolom op. Niet alle gegevenstypen die worden ondersteund door Azure Databricks, worden ondersteund door gerealiseerde weergaven.
column_comment
Een optionele
STRINGliteral die de kolom beschrijft. Deze optie moet gespecificeerd worden samen metcolumn_type. Als het kolomtype niet is opgegeven, wordt de kolomopmerking overgeslagen.-
Hiermee voegt u een beperking toe waarmee gegevens worden gevalideerd terwijl deze in de tabel stromen. Zie Gegevenskwaliteit beheren met de verwachtingen van pijplijnen.
-
Belangrijk
Deze functie bevindt zich in openbare preview-versie.
Voegt een kolommaskerfunctie toe om gevoelige gegevens anoniem te maken. Zie rijfilters en kolommaskers.
-
tabelbeperking
Belangrijk
Deze functie bevindt zich in openbare preview-versie.
Wanneer u een schema opgeeft, kunt u primaire en vreemde sleutels definiëren. De beperkingen zijn informatief en worden niet afgedwongen. Zie de CONSTRAINT clausule in de SQL-taalreferentie.
Opmerking
Als u tabelbeperkingen wilt definiëren, moet uw pijplijn een Unity Catalog-pijplijn zijn.
view_clauses
Geef desgewenst partitionering, opmerkingen en door de gebruiker gedefinieerde eigenschappen op voor de gerealiseerde weergave. Elke subclausule mag slechts eenmaal worden gespecificeerd.
DELTA GEBRUIKEN
Hiermee geeft u de gegevensindeling op. De enige optie is DELTA.
Deze component is optioneel en standaard ingesteld op DELTA.
GEPARTITIONEERD PER
Een optionele lijst met een of meer kolommen die moeten worden gebruikt voor partitionering in de tabel. Wederzijds uitsluiten met
CLUSTER BY.Liquid clustering biedt een flexibele, geoptimaliseerde oplossing voor clustering. Overweeg het gebruik
CLUSTER BYin plaats vanPARTITIONED BYvoor pijplijnen.CLUSTER BY
Schakel vloeistofclustering in de tabel in en definieer de kolommen die moeten worden gebruikt als clustersleutels. Gebruik automatische liquide clustering met
CLUSTER BY AUTOen Databricks kiest op intelligente wijze clusteringsleutels om de queryprestaties te optimaliseren. Wederzijds uitsluiten metPARTITIONED BY.PLAATS
Een optionele opslaglocatie voor tabelgegevens. Als dit niet is ingesteld, wordt het systeem standaard ingesteld op de opslaglocatie van de pijplijn.
Deze optie is alleen beschikbaar bij het publiceren naar hive-metastore. In Unity Catalog wordt de locatie automatisch beheerd.
COMMENTAAR
Een optionele beschrijving voor de tabel.
TBLPROPERTIES
Een optionele lijst met tabeleigenschappen voor de tabel.
MET ROW FILTER
Belangrijk
Deze functie bevindt zich in openbare preview-versie.
Hiermee voegt u een rijfilterfunctie toe aan de tabel. Toekomstige query's voor die tabel ontvangen een subset van de rijen waarvoor de functie de waarde WAAR oplevert. Dit is handig voor gedetailleerd toegangsbeheer, omdat hiermee de functie de identiteit en groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of bepaalde rijen moeten worden gefilterd.
Zie
ROW FILTERclausule.vraag
Een query die de gegevensset voor de tabel definieert.
Vereiste toestemmingen
De run-as-gebruiker voor een pijplijn moet de volgende machtigingen hebben:
-
SELECTbevoegdheid voor de basistabellen waarnaar wordt verwezen door de gematerialiseerde weergave. -
USE CATALOGbevoegdheid voor de bovenliggende catalogus enUSE SCHEMAbevoegdheid voor het bovenliggende schema. -
CREATE MATERIALIZED VIEWrecht op het schema voor de gematerialiseerde weergave.
Om een gebruiker in staat te stellen de pijplijn bij te werken, zijn de volgende vereisten voor de gerealiseerde weergave gedefinieerd:
-
USE CATALOGbevoegdheid voor de bovenliggende catalogus enUSE SCHEMAbevoegdheid voor het bovenliggende schema. - Eigendom van de gematerialiseerde weergave of
REFRESHrechten voor de gematerialiseerde weergave. - De eigenaar van de gerealiseerde weergave moet de
SELECTbevoegdheid hebben voor de basistabellen waarnaar wordt verwezen door de gerealiseerde weergave.
Voor een gebruiker die een query kan uitvoeren op de resulterende gerealiseerde weergave, is het volgende vereist:
-
USE CATALOGbevoegdheid voor de bovenliggende catalogus enUSE SCHEMAbevoegdheid voor het bovenliggende schema. -
SELECTbevoegdheden voor de gerealiseerde weergave.
Beperkingen
- Wanneer een gematerialiseerde weergave met een
sumaggregatie over een NULL-vatbare kolom de laatste niet-NULL-waarde uit die kolom verwijderd heeft - en dus alleenNULLwaarden in die kolom overblijven - geeft de resultante aggregatiewaarde van de gematerialiseerde weergave nul in plaats vanNULL. - Kolomverwijzing vereist geen alias. Voor niet-kolomverwijzingsexpressies is een alias vereist, zoals in het volgende voorbeeld:
- Toegestaan:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1 - Niet toegestaan:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Toegestaan:
-
NOT NULLmoet samen metPRIMARY KEYhandmatig worden opgegeven om een geldige instructie te vormen. - Gematerialiseerde weergaven bieden geen ondersteuning voor identiteitskolommen of surrogaatsleutels.
- Gematerialiseerde weergaven bieden geen ondersteuning voor
OPTIMIZEenVACUUMopdrachten. Onderhoud gebeurt automatisch. - Het wijzigen van de naam van de tabel of het wijzigen van de eigenaar wordt niet ondersteund.
- Gegenereerde kolommen, identiteitskolommen en standaardkolommen worden niet ondersteund.
Voorbeelden
-- 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