TWORZENIE ZMATERIALIZOWANEGO WIDOKU
Dotyczy: Databricks SQL
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej. Aby zarejestrować się w celu uzyskania dostępu, wypełnij ten formularz.
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żać ręcznie, zgodnie z harmonogramem lub planując potok DLT, w którym są zawarte.
Składnia
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 ] } [...]
Parametry
JEŚLI NIE ISTNIEJE
Tworzy widok, jeśli nie istnieje. Jeśli widok o tej nazwie już istnieje,
CREATE VIEW
instrukcja jest ignorowana.Możesz określić co najwyżej jeden z
IF NOT EXISTS
elementów lubOR REFRESH
.-
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.
-
Aliasy kolumn muszą być unikatowe.
column_comment
Opcjonalny
STRING
literał opisujący alias kolumny.-
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dodaje informacyjne ograniczenie klucza podstawowego lub informacyjnego klucza obcego do kolumny w zmaterializowanym widoku. Ograniczenia nie są obsługiwane w przypadku zmaterializowanych widoków w wykazie
hive_metastore
.
-
-
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Dodaje informacyjny klucz podstawowy lub informacyjne ograniczenia klucza obcego do zmaterializowanego widoku. Ograniczenia nie są obsługiwane w przypadku zmaterializowanych widoków w wykazie
hive-metastore
. 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.
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]
Jeśli zostanie podana, zaplanuje tabelę przesyłania strumieniowego lub zmaterializowany widok, aby odświeżyć dane przy użyciu danego harmonogramu kronu kwarcowego. Akceptowane są tylko time_zone_values .
AT TIME ZONE LOCAL
nie jest obsługiwana. JeśliAT 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
Nie można użyć
SCHEDULE
składni w definicji potoku delta Live Tables.
-
-
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
uprawnienia w schemacie mv.
Tylko właściciel może REFRESH
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.
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:
- Zmaterializowane widoki nie obsługują kolumn tożsamości ani kluczy zastępczych.
- Zmaterializowane widoki nie obsługują ad hoc
OPTIMIZE
iVACUUM
poleceń. Konserwacja odbywa się automatycznie.
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;
-- 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;
Powiązane artykuły
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla