Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Каждый раз при выполнении запланированного обновления для материализованных представлений озера, система Fabric определяет оптимальную стратегию использования — без обновления, добавочного или полного — в зависимости от изменений в исходных данных. Это поведение называется оптимальным обновлением, и оно помогает поддерживать материализованные представления озера в актуальном состоянии, минимизируя затраты на вычисления и время обновления.
В этой статье объясняется, как работает оптимальное обновление, что делает каждая стратегия и как переключаться на полный режим обновления при необходимости.
Замечание
Оптимальное обновление не поддерживается в следующих сценариях:
- Определения PySpark: оптимальное обновление применяется только к mlV, определенным с помощью Spark SQL. MLV, определенные в PySpark, всегда используют полное обновление.
- Исходные таблицы, отличные от Delta: материализованные представления озера, использующие таблицы, отличные от Delta, в качестве источника всегда выполняют полное обновление. Для добавочных стратегий и стратегий без обновления требуются источники таблиц Delta.
Преимущества оптимального обновления
Анализируя фиксации изменений в исходных таблицах, оптимальное обновление может более эффективно принимать решения об обработке данных. По возможности это может привести к следующему:
- Более низкая стоимость: меньше вычислительных ресурсов и хранилища используются, когда Структура обнаруживает, что исходные данные не изменились и полностью пропускают обновление. Дополнительная плата за оптимальное обновление не взимается — вы платите на основе использования вычислительных ресурсов во время операций обновления.
- Улучшенная эффективность: более быстрые циклы обновления при обработке только измененных данных, помогая обеспечить более свежие аналитические сведения.
- Экономия времени. Сокращение длительности обновления при применении добавочной обработки вместо повторной компиляции полного набора данных.
Оптимальные стратегии обновления
В следующей таблице описаны стратегии обновления, которые может выбирать оптимальное обновление:
| Обновление политики | Description |
|---|---|
| Нет обновления | Если новые разностные фиксации не обнаружены в исходных таблицах, Структура полностью пропускает обновление, избегая ненужных вычислений. |
| Добавочное обновление | Обрабатывает только измененные данные при обнаружении новых разностных фиксаций в исходных таблицах. |
| Полное обновление | Перекомпьютирует весь материализованный вид озера из полного исходного набора данных. Эта стратегия используется при обнаружении неподдерживаемых выражений, когда изменения не могут обрабатываться добавочно или когда исходный набор данных достаточно мал, чтобы полный перекомпьютер был быстрее добавочной обработки. |
Это важно
Инкрементное обновление применяется только в том случае, если выполняются оба следующих условия:
- Исходные данные можно только дополнять в течение цикла обновления. Если цикл обновления обнаруживает удаление или обновление исходной таблицы, подсистема возвращается к полному обновлению, даже если CDF включена, и запрос использует только поддерживаемые конструкции SQL. Дополнительные сведения см. в разделе добавочное обновление и данные только для добавления.
-
Канал разностных изменений данных (CDF) включен (
delta.enableChangeDataFeed=true) во всех исходных таблицах, на которые ссылается определение представления материализованного озера. Без CDF оптимальное обновление может выбирать только между отсутствием обновления и полным обновлением. Дополнительные сведения см. в разделе "Включить добавочное обновление".
Настройка оптимального обновления
Оптимальный переключатель обновления обеспечивает стратегии без обновления и полного обновления без дополнительной настройки. Чтобы разрешить стратегию поэтапного обновления данных, необходимо также включить функцию подачи изменений данных в исходных таблицах.
Включение оптимального режима обновления
По умолчанию для происхождения материализованного представления озера включен оптимальный режим обновления. Если он не включен, выполните следующие действия, чтобы включить его:
Перейдите к озеру и выберите "Материализованные представления озера".
Выберите "Управление", а затем выберите переключатель "Оптимальное обновление ", чтобы включить его.
Добавочное обновление и данные только для добавления
Сегодня инкрементальное обновление применяется только в том случае, если в исходные данные между обновлениями только добавляются новые записи. Если в какой-либо исходной таблице фиксируется удаление или обновление, Fabric переходит к полному обновлению — даже при включенном CDF и запросе, использующем только поддерживаемые конструкции SQL.
Обработчику требуется надежный способ идентификации удаленных строк. Чтобы повысить эффективность, пользователи теперь могут предоставлять подсказки обновления. Мы проводим пилотное внедрение среди ограниченного круга клиентов.
Включение инкрементного обновления
Чтобы использовать добавочное обновление, необходимо включить свойство разностного канала изменений (CDF) во всех исходных таблицах или материализованных представлениях озера, на которые ссылается определение материализованного представления озера. CDF позволяет Fabric считывать только строки, которые изменились с момента последнего обновления, вместо повторной обработки полного набора данных.
Без включения CDF, оптимальное обновление может выбирать только между отсутствием обновления и полным обновлением.
Tip
Чтобы определить возможности оптимизации обновления, Fabric отображает баннер, который содержит материализованные представления озера, доступные для добавочного обновления, но заблокирован, так как CDF не включен в одной или нескольких исходных таблицах. Баннер отображается в представлении lineage, в сведениях о недавних запусках и на уровне отдельного узла, чтобы вы могли заметить пробел независимо от того, с какой точки входа начинаете.
Чтобы включить CDF непосредственно из баннера, выполните следующие действия.
В баннере выберите "Активировать CDF".
В диалоговом окне "Включить канал изменений данных " просмотрите список материализованных представлений озера и исходные таблицы, в которых будет включен CDF.
Выберите Включить. Следующее обновление отражает обновленное состояние CDF.
Замечание
Включение CDF в исходных таблицах не оказывает заметного влияния на объем хранилища или производительность для рабочих нагрузок с добавлениями, что является сценарием, который поддерживает добавочное обновление. CDF — это стандартное свойство таблицы Delta Lake, от которого могут извлечь выгоду и другие функции Fabric. Дополнительные сведения о работе CDF см. в разделе "Использование канала данных изменений Delta Lake".
Вы можете включить CDF во время создания, включив TBLPROPERTIES в инструкцию CREATE :
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Для существующих исходных таблиц используйте ALTER TABLE для включения CDF:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Например, чтобы включить CDF в обеих исходных таблицах из руководства по началу работы:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Конструкции SQL, поддерживаемые добавочным обновлением
Добавочное обновление работает, когда определение материализованного представления озера использует только описанные здесь конструкции SQL. Если запрос включает неподдерживаемые конструкции, такие как функции окна или недетерминированные функции, Структура по-прежнему обновляет данные, но возвращается к полному обновлению.
| Конструкция SQL | Замечание |
|---|---|
| Выражение SELECT | Поддерживаются детерминированные встроенные функции и выражения. Не поддерживается для добавочного обновления: агрегатные функции (SUM(), COUNT(), AVG(), MIN(), MAX(), STDDEV(), и т. д.), GROUP BY, DISTINCT, оконные функции и недетерминированные функции, такие как rand(), uuid(), current_timestamp(). |
| FROM | Поддерживает разностные таблицы и материализованные представления озера. Вложенные запросы и ЦТ работают, если они используют только поддерживаемые предложения. |
| WHERE | Поддерживаются только детерминированные встроенные функции. |
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Supported. |
| ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ / ЛЕВОЕ ПОЛУСОЕДИНЯНИЕ | Supported. Инкрементальное обновление работает только в том случае, если таблица с правой стороны остается неизменной во время цикла обновления. Любое изменение в правой таблице активирует полное обновление. |
| UNION ALL | Supported. |
| WITH | Общие выражения таблицы (CTEs), если они используют только поддерживаемые предложения. |
| Вложенные запросы в выражениях | Вложенные запросы в выражениях SELECT или WHERE (например, скалярные вложенные запросы или EXISTS) активируют полное обновление, если любая ссылаемая таблица имеет изменения. |
| Ограничения качества данных | В ограничениях поддерживаются только детерминированные встроенные функции. |
Замечание
Использование неподдерживаемых конструкций не препятствует созданию материализованного представления озера. Это означает, что Fabric использует полное обновление вместо добавочного обновления.
Полное обновление
Оптимальное обновление при необходимости автоматически возвращается к полному обновлению, поэтому обычно нет необходимости в его принудительном выполнении. Однако существуют случаи, когда может потребоваться активировать полное обновление вручную, например для устранения неполадок с непредвиденными результатами или повторной обработки данных после исправления.
Выполнение однократного полного обновления с помощью SQL
Чтобы принудительно обновить определенное материализованное представление озера, выполните следующую команду:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Замечание
Если имя рабочей области содержит пробелы, заключите его в обратные апострофы: `My Workspace`.lakehouse.schema.view_name
Отключение оптимального обновления
Если вы хотите, чтобы каждый запланированный запуск выполнял полное обновление, можно отключить оптимальный переключатель обновления. Это отключает как стратегии без обновления, так и добавочных стратегий— каждый запуск перекомпьютирует полный набор данных, даже если исходные данные не изменились.
Перейдите к озеру и выберите "Материализованные представления озера".
Щелкните "Управление " и отключите переключатель "Оптимальное обновление ".