CREATE MATERIALIZED VIEW
Область применения: Databricks SQL
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Материализованное представление — это представление , в котором предварительно вычисляемые результаты доступны для запроса и могут быть обновлены для отражения изменений во входных данных. Каждый раз при обновлении материализованного представления результаты запроса пересчитываются для отражения изменений в восходящих наборах данных. Все материализованные представления поддерживаются конвейером DLT. Вы можете обновлять материализованные представления вручную, по расписанию или путем планирования конвейера DLT, в котором они содержатся.
Синтаксис
CREATE MATERIALIZED VIEW [IF NOT EXISTS]
view_name
[ column_list ]
[ view_clauses ]
AS query
column_list
( { column_name [ MASK clause ] [...] } [, ...] )
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] |
WITH { ROW FILTER clause } } [...]
Параметры
IF NOT EXISTS
Создает представление, если оно не существует. Если представление по этому имени уже существует,
CREATE VIEW
оператор игнорируется.Можно указать не более одного предложения из числа
IF NOT EXISTS
иOR REFRESH
.-
Имя созданного представления. Полное имя представления должно быть уникальным.
column_list
При необходимости помечает столбцы в результатах запроса представления. Если указан список столбцов, число псевдонимов столбцов должно совпадать с количеством выражений в запросе. Если список столбцов не указан, псевдонимы являются производными от текста представления.
-
Имена столбцов должны быть уникальными и сопоставляться с выходными столбцами запроса.
-
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Добавляет функцию маски столбца для анонимизации конфиденциальных данных. Все будущие запросы из этого столбца получат результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, в которых функция может проверить удостоверение и /или членство в группах вызывающего пользователя, чтобы решить, следует ли изменить значение.
-
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.Предложение WITH ROW FILTER
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Добавляет функцию фильтра строк в таблицу. Все будущие запросы из этой таблицы получат подмножество строк, для которых функция оценивает логическое значение TRUE. Это может быть полезно для точного контроля доступа, в которых функция может проверить удостоверение и /или членство в группах вызывающего пользователя, чтобы решить, следует ли фильтровать определенные строки.
-
AS query
Запрос, создающий представление на основе базовых таблиц или других представлений.
Необходимые разрешения
Пользователь, создающий материализованное представление (MV), является владельцем MV и должен иметь следующие разрешения:
SELECT
привилегии по базовым таблицам, на которые ссылается MV.USE CATALOG
привилегии в родительском каталоге иUSE SCHEMA
привилегиях родительской схемы.CREATE
привилегии в схеме для MV.
Для того чтобы пользователь мог обновить MV, им требуется:
USE CATALOG
привилегии в родительском каталоге иUSE SCHEMA
привилегиях родительской схемы.- Владение MV или
REFRESH
привилегией на MV. - Владелец MV должен иметь
SELECT
привилегии над базовыми таблицами, на которые ссылается MV.
Для того чтобы пользователь мог запрашивать MV, им требуется:
USE CATALOG
привилегии в родительском каталоге иUSE SCHEMA
привилегиях родительской схемы.SELECT
привилегии над материализованным представлением.
Фильтры строк и маски столбцов
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Фильтры строк позволяют указать функцию, которая применяется в качестве фильтра всякий раз, когда таблица сканирует строки. Эти фильтры гарантируют, что последующие запросы возвращают только строки, для которых предикат фильтра оценивается как true.
Маски столбцов позволяют маскировать значения столбца всякий раз, когда таблица сканирует строки. Все будущие запросы, связанные с этим столбцом, получат результат оценки функции по столбцу, заменив исходное значение столбца.
Дополнительные сведения о том, как использовать фильтры строк и маски столбцов, см. в разделе "Фильтрация конфиденциальных данных таблицы" с помощью фильтров строк и масок столбцов.
Управление фильтрами строк и масками столбцов
Фильтры строк и маски столбцов для материализованных представлений должны быть добавлены с помощью инструкции CREATE
.
Поведение
- Обновление в качестве определителя: когда
REFRESH MATERIALIZED VIEW
инструкция обновляет материализованное представление, функции фильтрации строк выполняются с правами определяющего (как владелец таблицы). Это означает, что обновление таблицы использует контекст безопасности пользователя, создавшего материализованное представление. - Запрос. Хотя большинство фильтров выполняются с правами определителя, функции, которые проверяют контекст пользователя (например
CURRENT_USER
, иIS_MEMBER
) являются исключениями. Эти функции выполняются в качестве вызывающего средства. Этот подход применяет элементы управления безопасностью и доступом для определенных пользователей на основе контекста текущего пользователя. - При создании материализованных представлений по исходным таблицам, содержащим фильтры строк и маски столбцов, обновление материализованного представления всегда является полным обновлением. Полное обновление повторно обрабатывает все данные, доступные в источнике с помощью последних определений. Это гарантирует, что политики безопасности в исходных таблицах оцениваются и применяются с наиболее актуальными данными и определениями.
Наблюдаемость
Используйте DESCRIBE EXTENDED
, INFORMATION_SCHEMA
или обозреватель каталога, чтобы проверить существующие фильтры строк и маски столбцов, которые применяются к заданному материализованному представлению. Эта функция позволяет пользователям проверять и проверять меры доступа к данным и защиты в материализованных представлениях.
Ограничения
- Если материализованное представление с агрегатом
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
команды. Обслуживание происходит автоматически. - Материализованные представления не поддерживают ограничения таблицы, такие как
PRIMARY KEY
иFOREIGN KEY
. - Материализованные представления не поддерживают ожидания для определения ограничений качества данных.
Примеры
-- 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 row filter and a column mask
> CREATE MATERIALIZED VIEW masked_view (
id,
name,
region,
ssn MASK catalog.schema.ssn_mask_fn
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT id, name, region, ssn
FROM employees;
Связанные статьи
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по