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


REFRESH Предложение POLICY

Область применения:Отмечено «Да» Databricks SQL Отмечено «Да» Databricks Runtime

Это важно

Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".

Добавляет политику обновления в материализованное представление, контролируя время добавочного обновления. Применяется к инструкции CREATE MATERIALIZED VIEW .

Дополнительные сведения о добавочной инкрементализации см. в разделе добавочное обновление для материализованных представлений. Вы можете проверить, является ли SQL-запрос добавочным с помощью инструкции EXPLAIN CREATE MATERIALIZED VIEW . См. EXPLAIN CREATE MATERIALIZED VIEW.

Синтаксис

REFRESH POLICY refresh_policy

refresh_policy:
  AUTO | INCREMENTAL | INCREMENTAL STRICT | FULL

Параметры

  • refresh_policy

    Определяет политику обновления для материализованного представления. Если опущено REFRESH POLICY , AUTO используется политика по умолчанию.

    Политика обновления определяет, как обновление обрабатывает добавочную обработку материализованного представления.

    • AUTO

      Система автоматически выбирает добавочное или полное обновление на основе модели затрат.

      Государство Поведение
      Добавочный доступен для обновления. Использует модель затрат, чтобы определить, какая из них дешевле, добавочная или полная.
      Добавочный параметр недоступен для обновления. Выполняет полное обновление.
      Требуется создание или повторная инициализация (например, при изменении схемы) Выполняет полное обновление.
    • INCREMENTAL

      Система использует добавочные обновления, когда это возможно. Если CREATEзапрос не может быть добавочным, создание завершается ошибкой.

      Государство Поведение
      Добавочный доступен для обновления. Выполняет добавочное обновление.
      Добавочный параметр недоступен для обновления. Выполняет полное обновление.
      Требуется создание или повторная инициализация, но добавочная настройка возможна для запроса. Выполняет полное обновление.
      Требуется создание или повторная инициализация, а добавочная инкрементализация для запроса невозможна. Операция завершается ошибкой.
    • INCREMENTAL STRICT

      Система использует добавочные обновления. Если CREATEзапрос не может быть добавочным, создание завершается ошибкой.

      Государство Поведение
      Добавочный доступен для обновления. Выполняет добавочное обновление.
      Добавочный параметр недоступен для обновления. Обновление завершается ошибкой.
      Требуется создание или повторная инициализация, но добавочная настройка возможна для запроса. Выполняет полное обновление.
      Требуется создание или повторная инициализация, а добавочная инкрементализация для запроса невозможна. Операция завершается ошибкой.
    • FULL

      Система всегда использует полное обновление.

      Государство Поведение
      Добавочный доступен для обновления. Выполняет полное обновление.
      Добавочный параметр недоступен для обновления. Выполняет полное обновление.
      Требуется создание или повторная инициализация. Выполняет полное обновление.

Поведение при сбое

Если обновление завершается ошибкой, так как оно не может соответствовать политике обновления (для REFRESH POLICY INCREMENTAL (STRICT)), система возвращает класс MATERIALIZED_VIEW_NOT_INCREMENTALIZABLE ошибок с подробными сведениями, описывающими причину отсутствия добавочного увеличения. Рассмотрим пример.

  • OPERATOR_NOT_SUPPORTED: оператор, например сложное соединение, предотвращает добавочную настройку.
  • EXPRESSION_NOT_DETERMINSTIC: недетерминированная функция, например RAND, используется в запросе.

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

Чтобы проверить, является ли SQL-запрос добавочным, используйте инструкцию EXPLAINCREATE MATERIALIZED VIEW . См. EXPLAIN CREATE MATERIALIZED VIEW.

Примеры

-- Create a materialized view with an incremental policy
CREATE MATERIALIZED VIEW IF NOT EXISTS my_mv
REFRESH POLICY INCREMENTAL
AS SELECT a, sum(b) FROM my_catalog.example.my_table GROUP BY a;