TWORZENIE ZMATERIALIZOWANEGO WIDOKU
Dotyczy: Databricks SQL
Zmaterializowany widok to widok , w którym wstępnie skompilowane wyniki są dostępne dla zapytania i można je zaktualizować w celu odzwierciedlenia zmian w danych wejściowych. Za każdym razem, gdy zmaterializowany widok jest odświeżany, wyniki zapytania są ponownie obliczane w celu odzwierciedlenia zmian w nadrzędnych zestawach danych. Wszystkie zmaterializowane widoki są wspierane przez potok DLT. Widoki zmaterializowane można odświeżyć ręcznie lub zgodnie z harmonogramem.
Aby dowiedzieć się więcej na temat wykonywania odświeżania ręcznego, zobacz ODŚWIEŻANIE (ZMATERIALIZOWANY WIDOK lub TABELA PRZESYŁANIA STRUMIENIOWEGO).
Aby dowiedzieć się więcej o sposobie planowania odświeżania, zobacz Przykłady lub ALTER MATERIALIZED VIEW.
Uwaga
Operacje tworzenia i odświeżania na zmaterializowanych widokach i tabelach przesyłania strumieniowego są obsługiwane przez potok bezserwerowych tabel delta live tables. Eksplorator wykazu umożliwia wyświetlanie szczegółowych informacji o potokach tworzenia kopii zapasowych w interfejsie użytkownika. Zobacz Co to jest Eksplorator wykazu?.
Składnia
{ CREATE OR REPLACE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] }
view_name
[ column_list ]
[ view_clauses ]
[schedule_clause]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ , table_constraint ] [...])
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] schedule_clause |
WITH { ROW FILTER clause } } [...]
schedule_clause
{ EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
CRON cron_string [ AT TIME ZONE timezone_id ] }
Parametry
ZASTĄPIĆ
Jeśli zostanie określony, zastępuje widok i jego zawartość, jeśli już istnieje.
JEŚLI NIE ISTNIEJE
Tworzy widok, jeśli nie istnieje. Jeśli widok o tej nazwie już istnieje,
CREATE MATERIALIZED VIEW
instrukcja jest ignorowana.Możesz określić co najwyżej jeden z
IF NOT EXISTS
elementów lubOR REPLACE
.-
Nazwa nowo utworzonego widoku. W pełni kwalifikowana nazwa widoku musi być unikatowa.
column_list
Opcjonalnie etykietuje kolumny w wyniku zapytania widoku. Jeśli podasz listę kolumn, liczba aliasów kolumn musi być zgodna z liczbą wyrażeń w zapytaniu. Jeśli nie określono listy kolumn, aliasy pochodzą z treści widoku.
-
Nazwy kolumn muszą być unikatowe i mapować je na kolumny wyjściowe zapytania.
column_type
Określa typ danych kolumny. Nie wszystkie typy danych obsługiwane przez usługę Azure Databricks są obsługiwane przez zmaterializowane widoki.
column_comment
Opcjonalny literał
STRING
opisujący kolumnę. Tę opcję należy określić wraz zcolumn_type
. Jeśli typ kolumny nie zostanie określony, komentarz kolumny zostanie pominięty.column_constraint
Dodaje informacyjne ograniczenie klucza podstawowego lub informacyjnego klucza obcego do kolumny w zmaterializowanym widoku. Jeśli typ kolumny nie zostanie określony, ograniczenie kolumny zostanie pominięte.
-
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dodaje funkcję maski kolumn do anonimowości poufnych danych. Wszystkie kolejne zapytania z tej kolumny otrzymują wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy zredagować wartość. Jeśli typ kolumny nie zostanie określony, maska kolumny zostanie pominięta.
-
table_constraint
Dodaje informacyjne ograniczenie klucza podstawowego lub informacyjnego klucza obcego do tabeli w zmaterializowanym widoku. Jeśli typ kolumny nie zostanie określony, ograniczenie tabeli zostanie pominięte.
view_clauses
Opcjonalnie określ partycjonowanie, komentarze, właściwości zdefiniowane przez użytkownika i harmonogram odświeżania dla nowego zmaterializowanego widoku. Każda klauzula podrzędna może być określona tylko raz.
-
Opcjonalna lista kolumn tabeli do partycjonowania tabeli według.
VIEW_COMMENT KOMENTARZ
Literał
STRING
opisujący tabelę.-
Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.
Użyj tego ustawienia, aby określić kanał środowiska uruchomieniowego delta Live Tables używany do uruchamiania tej instrukcji. Ustaw wartość
pipelines.channel
właściwości na"PREVIEW"
lub"CURRENT"
. Domyślna wartość to"CURRENT"
. Aby uzyskać więcej informacji na temat kanałów delta live tables, zobacz Delta Live Tables runtime channels (Kanały środowiska uruchomieniowego delta Live Tables). SCHEDULE [ REFRESH ] schedule_clause
EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Aby zaplanować odświeżanie okresowo, użyj
EVERY
składni. JeśliEVERY
określono składnię, tabela przesyłania strumieniowego lub zmaterializowany widok jest okresowo odświeżany w określonym interwale na podstawie podanej wartości, takiej jakHOUR
, ,HOURS
DAY
,DAYS
WEEK
lubWEEKS
. W poniższej tabeli wymieniono zaakceptowane wartości całkowite dla elementunumber
.Time unit Wartość całkowita HOUR or HOURS
1 <= H <= 72 DAY or DAYS
1 <= D <= 31 WEEK or WEEKS
1 <= W <= 8 Uwaga
Liczba pojedyncza i mnoga dołączonej jednostki czasowej są semantycznie równoważne.
CRON cron_string [ AT TIME ZONE timezone_id ]
Aby zaplanować odświeżanie przy użyciu wartości kronu kwarcowego. Akceptowane są prawidłowe time_zone_values .
AT TIME ZONE LOCAL
nie jest obsługiwana.Jeśli
AT TIME ZONE
jest nieobecny, używana jest strefa czasowa sesji. JeśliAT TIME ZONE
jest nieobecny, a strefa czasowa sesji nie jest ustawiona, zostanie zgłoszony błąd.SCHEDULE
jest semantycznie równoważne .SCHEDULE REFRESH
WITH ROW FILTER, klauzula
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dodaje do tabeli funkcję filtru wierszy. Wszystkie kolejne zapytania z tej tabeli otrzymują podzbiór wierszy, dla których funkcja oblicza wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy filtrować niektóre wiersze.
-
-
Zapytanie, które konstruuje widok z tabel podstawowych lub innych widoków.
Wymagane uprawnienia
Użytkownik tworzący zmaterializowany widok (MV) jest właścicielem mv i musi mieć następujące uprawnienia:
-
SELECT
uprawnienia do tabel bazowych, do których odwołuje się mv. -
USE CATALOG
uprawnienia w katalogu nadrzędnym iUSE SCHEMA
uprawnienia w schemacie nadrzędnym. -
CREATE MATERIALIZED VIEW
uprawnienia w schemacie mv.
Aby użytkownik mógł odświeżyć mv, wymaga:
-
USE CATALOG
uprawnienia w katalogu nadrzędnym iUSE SCHEMA
uprawnienia w schemacie nadrzędnym. - Własność mv lub
REFRESH
uprawnienia w mv. - Właściciel MV musi mieć
SELECT
uprawnienia do tabel bazowych, do których odwołuje się mv.
Aby użytkownik mógł wykonywać zapytania dotyczące wzorca MV, wymaga:
-
USE CATALOG
uprawnienia w katalogu nadrzędnym iUSE SCHEMA
uprawnienia w schemacie nadrzędnym. -
SELECT
uprawnienia do zmaterializowanego widoku.
Filtry wierszy i maski kolumn
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Filtry wierszy umożliwiają określenie funkcji, która ma zastosowanie jako filtr za każdym razem, gdy skanowanie tabeli pobiera wiersze. Te filtry zapewniają, że kolejne zapytania zwracają tylko wiersze, dla których predykat filtru daje wartość true.
Maski kolumn umożliwiają maskowanie wartości kolumny za każdym razem, gdy skanowanie tabeli pobiera wiersze. Wszystkie przyszłe zapytania obejmujące tę kolumnę otrzymają wynik oceny funkcji w kolumnie, zastępując oryginalną wartość kolumny.
Aby uzyskać więcej informacji na temat używania filtrów wierszy i masek kolumn, zobacz Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.
Zarządzanie filtrami wierszy i maskami kolumn
Filtry wierszy i maski kolumn w zmaterializowanych widokach należy dodać za pomocą instrukcji CREATE
.
Zachowanie
-
Odśwież jako definiuj: gdy
REFRESH MATERIALIZED VIEW
instrukcja odświeża zmaterializowany widok, funkcje filtrowania wierszy są uruchamiane z prawami definiowanego (jako właściciel tabeli). Oznacza to, że odświeżanie tabeli używa kontekstu zabezpieczeń użytkownika, który utworzył zmaterializowany widok. -
Zapytanie: Podczas gdy większość filtrów jest uruchamiana z prawami definiowanego, funkcje sprawdzające kontekst użytkownika (takie jak
CURRENT_USER
iIS_MEMBER
) są wyjątkami. Te funkcje działają jako wywołanie. Takie podejście wymusza zabezpieczenia danych specyficzne dla użytkownika i mechanizmy kontroli dostępu na podstawie kontekstu bieżącego użytkownika. - Podczas tworzenia zmaterializowanych widoków w tabelach źródłowych zawierających filtry wierszy i maski kolumn odświeżanie zmaterializowanego widoku jest zawsze pełnym odświeżaniem. Pełne odświeżanie ponownie przetwarza wszystkie dane dostępne w źródle przy użyciu najnowszych definicji. Dzięki temu zasady zabezpieczeń w tabelach źródłowych są oceniane i stosowane przy użyciu najbardziej aktualnych danych i definicji.
Wgląd w informacje
DESCRIBE EXTENDED
Użyj INFORMATION_SCHEMA
, lub Eksploratora wykazu, aby zbadać istniejące filtry wierszy i maski kolumn, które mają zastosowanie do danego zmaterializowanego widoku. Ta funkcja umożliwia użytkownikom przeprowadzanie inspekcji i przeglądania środków dostępu do danych i ochrony w zmaterializowanych widokach.
Ograniczenia
- Gdy zmaterializowany widok z agregacją w kolumnie obsługującej
sum
wartość NULL ma ostatnią wartość inną niż NULL usuniętą z tej kolumny , a zatem tylkoNULL
wartości pozostają w tej kolumnie — wynikowa wartość agregowana widoku zwraca zero zamiastNULL
. - Odwołanie do kolumny nie wymaga aliasu. Wyrażenia odwołania inne niż kolumny wymagają aliasu, jak w poniższym przykładzie:
- Dozwolone:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Niedozwolone:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Dozwolone:
-
NOT NULL
należy określić ręcznie wraz z instrukcjąPRIMARY KEY
, aby być prawidłową instrukcją. - Zmaterializowane widoki nie obsługują kolumn tożsamości ani kluczy zastępczych.
- Zmaterializowane widoki nie obsługują
OPTIMIZE
poleceń iVACUUM
. Konserwacja odbywa się automatycznie. - Zmaterializowane widoki nie obsługują oczekiwań dotyczących definiowania ograniczeń jakości danych.
Przykłady
-- 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;
-- Sets the runtime channel to "PREVIEW"
> CREATE MATERIALIZED VIEW mv_preview
TBLPROPERTIES(pipelines.channel = "PREVIEW")
AS SELECT * FROM RANGE(10)
-- Create a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id int NOT NULL,
full_name string,
movie_title string,
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 or replace the materialized view to remove the table constraint and add a partition
> CREATE OR REPLACE MATERIALIZED VIEW subscribed_movies
PARTITIONED BY (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 with a row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
id int,
name string,
region string,
ssn string MASK catalog.schema.ssn_mask_fn
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT id, name, region, ssn
FROM employees;