CREATE MATERIALIZED VIEW
Область применения: Databricks SQL
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии. Чтобы зарегистрироваться для доступа, заполните эту форму.
Материализованное представление — это представление , в котором предварительно вычисляемые результаты доступны для запроса и могут быть обновлены для отражения изменений во входных данных. Каждый раз при обновлении материализованного представления результаты запроса пересчитываются для отражения изменений в вышестоящий наборах данных. Все материализованные представления поддерживаются конвейером DLT. Вы можете обновлять материализованные представления вручную, по расписанию или путем планирования конвейера DLT, в котором они содержатся.
Синтаксис
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 ] } [...]
Параметры
IF NOT EXISTS
Создает представление, если оно не существует. Если представление по этому имени уже существует,
CREATE VIEW
оператор игнорируется.Можно указать не более одного предложения из числа
IF NOT EXISTS
иOR REFRESH
.-
Имя созданного представления. Полное имя представления должно быть уникальным.
column_list
При необходимости помечает столбцы в результатах запроса представления. Если указан список столбцов, число псевдонимов столбцов должно совпадать с количеством выражений в запросе. Если список столбцов не указан, псевдонимы являются производными от текста представления.
-
Псевдонимы столбцов должны быть уникальными.
column_comment
Необязательный
STRING
литерал, описывающий псевдоним столбца.-
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Добавляет ограничение на информационный первичный ключ или информационный внешний ключ в столбец в материализованном представлении. Ограничения не поддерживаются для материализованных представлений в каталоге
hive_metastore
.
-
-
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Добавляет в материализованное представление ограничения информационных первичных или информационных внешних ключей. Ограничения не поддерживаются для материализованных представлений в каталоге
hive-metastore
. view_clauses
При необходимости укажите секционирование, комментарии, пользовательские свойства и расписание обновления для нового материализованного представления. Каждое вложенное предложение может быть указано только один раз.
-
Необязательный список столбцов таблицы для секционирования таблицы по.
КОММЕНТАРИЙ view_comment
Литерал
STRING
для описания таблицы.-
При необходимости задает одно или несколько свойств, определяемых пользователем.
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ]
Если это указано, планирует потоковую таблицу или материализованное представление, чтобы обновить свои данные с заданным расписанием крона . Принимаются только time_zone_values . Функция
AT TIME ZONE LOCAL
не поддерживается. ЕслиAT TIME ZONE
нет, используется часовой пояс сеанса. ЕслиAT TIME ZONE
отсутствует и часовой пояс сеанса не задан, возникает ошибка.SCHEDULE
семантически эквивалентенSCHEDULE REFRESH
.Синтаксис нельзя использовать в определении
SCHEDULE
конвейера Delta Live Table.
-
AS query
Запрос, создающий представление на основе базовых таблиц или других представлений.
Необходимые разрешения
Пользователь, создающий материализованное представление (MV), является владельцем MV и должен иметь следующие разрешения:
SELECT
привилегии по базовым таблицам, на которые ссылается MV.USE CATALOG
привилегии в родительском каталоге иUSE SCHEMA
привилегиях родительской схемы.CREATE
привилегии в схеме для MV.
Только владелец может REFRESH
MV.
Для того чтобы пользователь мог запрашивать MV, им требуется:
USE CATALOG
привилегии в родительском каталоге иUSE SCHEMA
привилегиях родительской схемы.SELECT
привилегии над материализованным представлением.
Ограничения
- Если материализованное представление с агрегатом
sum
по столбцу с возможностью NULL имеет последнее значение, отличное от NULL, удалено из этого столбца, и таким образом толькоNULL
значения остаются в этом столбце , то результирующий агрегатное значение представления материализованногоNULL
представления возвращает ноль вместо него. - Ссылка на столбец не требует псевдонима. Для ссылочных выражений, отличных от столбцов, требуется псевдоним, как показано в следующем примере:
- Разрешены:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- Запрещено:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Разрешены:
- Материализованные представления не поддерживают столбцы удостоверений или суррогатные ключи.
- Материализованные представления не поддерживают нерегламентированные и
VACUUM
нерегламентированныеOPTIMIZE
команды. Обслуживание происходит автоматически.
Примеры
-- 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;
Связанные статьи
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по