REFRESH (MATERIALIZED VIEW или STREAMING TABLE)

Область применения:отмеченный флажок «да» Databricks SQL

Обновите данные для потоковой таблицы или материализованного представления. Данные обновляются синхронно по умолчанию. Вы можете отслеживать состояние обновления, выполнив DESCRIBE EXTENDED.

Примечание.

Операции создания и обновления материализованных представлений и потоковых таблиц используются бессерверными конвейерами Lakeflow. Обозреватель каталогов можно использовать для просмотра сведений о резервных конвейерах в пользовательском интерфейсе. См. Что такое Catalog Explorer?.

Примечание.

REFRESH MATERIALIZED VIEW также относится к материализованным представлениям метрик. Используйте его для ручного обновления материализации, которые возвращают представление метрик. См. статью "Материализация" для представлений метрик.

Синтаксис

REFRESH { MATERIALIZED VIEW | [ STREAMING ] TABLE } table_name
  [ FULL ] [ WHERE predicate ] [ SYNC | ASYNC ]

Можно указать любое подмножество FULL, WHEREа также SYNCASYNC в одной и той же команде.

Параметры

  • table_name

    Определяет материализованное представление или потоковую таблицу для обновления. Имя не должно включать темпоральную спецификацию или спецификацию опций. Если объект не удается найти Azure Databricks, возникает ошибка TABLE_OR_VIEW_NOT_FOUND .

  • ПОЛНОЕ

    Следует ли выполнять полное обновление.

    • Для материализованных представлений полное обновление обрабатывает все данные, доступные в источнике.
    • Для таблиц потоковой передачи полное обновление усекает таблицу и обрабатывает все данные, доступные в источнике с последней версией определения таблицы потоковой передачи.

    Не рекомендуется запускать полные обновления на источниках, которые не хранят всю историю данных или имеют короткие периоды хранения, таких как Kafka, так как полное обновление удаляет существующие данные. Возможно, вы не сможете восстановить старые данные, если данные больше не доступны в источнике.

  • Предикат WHERE

    Применяется к:check помеченной да потоковой таблице, созданной с предложением FLOW REPLACE WHERE

    Переопределяет предикат потока REPLACE WHERE для этого одного обновления. Обновление удаляет только строки, соответствующие predicate целевому объекту, и перекомпьютирует их из источника. Определенный предикат потока не изменяется и снова применяется к следующему обновлению, поэтому переопределение предиката является однократной операцией, которая не изменяет определение таблицы. Используйте его для однократных обратных заполнений или исправлений. См. раздел "Потоки REPLACE WHERE " для автономных таблиц потоковой передачи.

    Предложение WHERE поддерживается только в потоковой таблице, поток которой был создан.FLOW REPLACE WHERE При WHERE указании любой другой таблицы потоковой передачи или в материализованном представлении возвращается ошибка.

  • SYNC

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

    Это поведение принимается по умолчанию.

  • ASYNC

    Следует ли выполнять асинхронное обновление, которое запускает фоновое задание в конвейерах Lakeflow. Команда возвращается непосредственно перед завершением загрузки данных со ссылкой на конвейер, который поддерживает материализованное представление или потоковую таблицу. Чтобы просмотреть состояние обновления, перейдите по ссылке.

    Вы должны указать ASYNC, если хотите выполнять асинхронное обновление. Операция выполняется синхронно, если ключевое слово не указано.

Примеры

-- Refreshes the materialized view to reflect the latest available data
> REFRESH MATERIALIZED VIEW catalog.schema.view_name;

-- Refreshes the streaming table to process the latest available data
-- The current catalog and schema will be used to qualify the table
> REFRESH STREAMING TABLE st_name;

-- Truncates the table and processes all data from scratch for the streaming table
> REFRESH STREAMING TABLE cat.db.st_name FULL;

-- Overrides the REPLACE WHERE predicate for a single asynchronous refresh.
-- Only rows matching id = 3 are recomputed. The flow's static predicate is unchanged.
> REFRESH STREAMING TABLE rep_st WHERE id = 3 ASYNC;