Поделиться через


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.

  • view_name

    Имя созданного представления. Полное имя представления должно быть уникальным.

  • column_list

    При необходимости помечает столбцы в результатах запроса представления. Если указан список столбцов, число псевдонимов столбцов должно совпадать с количеством выражений в запросе. Если список столбцов не указан, псевдонимы являются производными от текста представления.

    • column_name

      Имена столбцов должны быть уникальными и сопоставляться с выходными столбцами запроса.

    • Предложение MASK

      Внимание

      Эта функция предоставляется в режиме общедоступной предварительной версии.

      Добавляет функцию маски столбца для анонимизации конфиденциальных данных. Все будущие запросы из этого столбца получат результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, в которых функция может проверить удостоверение и /или членство в группах вызывающего пользователя, чтобы решить, следует ли изменить значение.

  • view_clauses

    При необходимости укажите секционирование, комментарии, пользовательские свойства и расписание обновления для нового материализованного представления. Каждое вложенное предложение может быть указано только один раз.

    • PARTITIONED BY

      Необязательный список столбцов таблицы для секционирования таблицы по.

    • КОММЕНТАРИЙ view_comment

      Литерал STRING для описания таблицы.

    • TBLPROPERTIES

      При необходимости задает одно или несколько свойств, определяемых пользователем.

    • 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;