Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается добавочное обновление данных в Dataflow 2-го поколения для фабрики данных Microsoft Fabric. При использовании потоков данных для приема и преобразования данных иногда требуется обновить только новые или обновленные данные, особенно при росте размера данных.
Функция добавочного обновления помогает:
- Сокращение времени обновления
- Сделать операции более надежными, избегая длительных процессов
- Использование меньшего количества ресурсов
Prerequisites
Чтобы использовать добавочное обновление в потоке данных 2-го поколения, вам потребуется:
- Емкость Fabric
- Источник данных, поддерживающий свертывание (рекомендуется) и содержащий столбец Date/DateTime для фильтрации данных
- Целевой объект данных, поддерживающий инкрементное обновление (см. Поддержка целевого объекта)
- Ознакомьтесь с ограничениями перед началом работы
Destination support
Эти назначения данных поддерживают инкрементальное обновление:
- Fabric Lakehouse (предварительная версия)
- Fabric Warehouse
- База данных SQL Azure
- Azure Synapse Analytics
Вы также можете использовать другие места назначения с поэтапным обновлением. Создайте второй запрос, который ссылается на подготовленные данные для обновления места назначения. Этот подход по-прежнему позволяет использовать добавочное обновление для уменьшения объема данных, необходимых для обработки из исходной системы.
Однако вам потребуется выполнить полное обновление с промежуточных данных до конечного назначения.
Как использовать инкрементальное обновление
Создайте новый поток данных 2-го поколения или откройте существующий.
В редакторе потока данных создайте новый запрос, который получает данные, которые нужно обновить постепенно.
Проверьте предварительный просмотр данных, чтобы убедиться, что запрос возвращает данные с помощью столбца DateTime, Date или DateTimeZone для фильтрации.
Убедитесь, что запрос полностью свертывается, что означает, что запрос отправляется в исходную систему. Если он не полностью сворачивается, измените запрос так, чтобы он это сделал. Вы можете проверить, полностью ли сворачивается ваш запрос, проверив шаги запроса в редакторе запросов.
Щелкните правой кнопкой мыши запрос и выберите добавочное обновление.
Настройте необходимые параметры для добавочного обновления.
- Выберите столбец DateTime для фильтрации по.
- Извлеките данные из прошлого.
- Bucket size.
- Извлеките только новые данные, если максимальное значение в этом столбце изменяется.
При необходимости настройте дополнительные параметры.
- Требуется, чтобы запрос инкрементального обновления был полностью свернут.
Нажмите кнопку "ОК ", чтобы сохранить параметры.
Если вы хотите, настройте назначение данных для запроса. Сделайте это перед первым инкрементным обновлением, иначе место назначения будет содержать только данные, измененные с момента последнего обновления.
Опубликовать Dataflow Gen2.
После конфигурации инкрементного обновления поток данных автоматически обновляет данные постепенно, основываясь на ваших настройках. Поток данных получает только данные, измененные с момента последнего обновления, поэтому он выполняется быстрее и использует меньше ресурсов.
Как работает инкрементальное обновление за кулисами
Инкрементальное обновление делит данные на ячейки на основе столбца DateTime. Каждый контейнер содержит данные, измененные с момента последнего обновления. Поток данных знает, что изменилось, проверив максимальное значение в указанном столбце.
Если максимальное значение изменилось для этого контейнера, поток данных получает весь контейнер и заменяет данные в назначении. Если максимальное значение не изменилось, поток данных не получает никаких данных. Вот как это работает шаг за шагом.
Первый шаг. Оценка изменений
При запуске потока данных сначала проверяет, что изменилось в источнике данных. Он проверяет максимальное значение в столбце DateTime и сравнивает его с максимальным значением из последнего обновления.
Если максимальное значение изменилось (или если это первое обновление), поток данных помечает этот контейнер как измененный и обработает его. Если максимальное значение совпадает, поток данных пропускает эту корзину полностью.
Второй шаг. Получение данных
Теперь поток данных получает данные для каждого измененного контейнера. Он обрабатывает несколько контейнеров одновременно, чтобы ускорить работу.
Поток данных загружает эти данные в буферную зону. Он получает только данные, которые попадают в диапазон времени контейнера— это означает только данные, которые фактически изменились с момента последнего обновления.
Последний шаг. Замена данных в назначении
Поток данных обновляет целевой объект новыми данными. Он использует подход "replace": сначала удаляет старые данные для этого конкретного контейнера, а затем вставляет свежие данные.
Этот процесс влияет только на данные в диапазоне времени контейнера. Любые данные за пределами этого диапазона (например, старые исторические данные) остаются нетронутыми.
Описание параметров инкрементного обновления
Чтобы настроить добавочное обновление, необходимо указать эти параметры.
General settings
Эти параметры необходимы и указывают базовую конфигурацию для добавочного обновления.
Выбор столбца DateTime для фильтрации по
Этот обязательный параметр указывает столбец, используемый для фильтрации данных. Этот столбец должен быть типа DateTime, Date или DateTimeZone. Поток данных использует этот столбец для фильтрации данных и получает только данные, которые изменились с момента последнего обновления.
Извлечение данных из прошлого
Этот обязательный параметр указывает, насколько далеко назад поток данных должен извлекать данные. Этот параметр получает начальную нагрузку данных. Поток данных получает все данные из исходной системы в пределах указанного диапазона времени. Возможны следующие значения:
- x days
- x weeks
- x months
- x quarters
- x years
Например, если указать 1 месяц, поток данных получает все новые данные из исходной системы в течение последнего месяца.
Bucket size
Этот обязательный параметр указывает размер контейнеров, используемых потоком данных для фильтрации данных. Поток данных делит данные на контейнеры на основе столбца DateTime. Каждый контейнер содержит данные, измененные с момента последнего обновления. Размер контейнера определяет, сколько данных обрабатывается в каждой итерации:
- Меньший размер контейнера означает, что поток данных обрабатывает меньше данных в каждой итерации, но требует больше итераций для обработки всех данных.
- Размер контейнера больше означает, что поток данных обрабатывает больше данных в каждой итерации, но требует меньше итерации для обработки всех данных.
Извлечение новых данных только при изменении максимального значения в этом столбце
Этот обязательный параметр указывает столбец, используемый потоком данных для определения изменения данных. Поток данных сравнивает максимальное значение в этом столбце с максимальным значением предыдущего обновления. При изменении максимального значения поток данных получает данные, которые изменились с момента последнего обновления. Если максимальное значение не изменилось, поток данных не получает никаких данных.
Извлечение данных только для завершенных периодов
Этот необязательный параметр указывает, должен ли поток данных извлекать только данные в течение завершенных периодов. Если этот параметр включен, поток данных извлекает только данные за периоды, которые завершились. Поток данных извлекает только данные в течение завершенных периодов и не содержит будущих данных. Если этот параметр отключен, поток данных извлекает данные для всех периодов, включая периоды, которые не завершены и содержат будущие данные.
Например, если у вас есть столбец DateTime, содержащий дату транзакции, и вы хотите обновить только полные месяцы, этот параметр можно включить с размером month
контейнера. Поток данных будет извлекать данные только в течение полных месяцев и не будет извлекать данные в течение неполных месяцев.
Advanced settings
Некоторые параметры считаются расширенными и не требуются для большинства сценариев.
Требовать инкрементного запроса обновления для полной обработки
Этот параметр контролирует, должен ли запрос добавочного обновления "полностью сворачиваться". При полном сворачивании запрос целиком передается на обработку в исходную систему.
Если вы включите этот параметр, ваш запрос должен полностью сворачиваться. Если отключить его, запрос может быть частично обработан потоком данных вместо исходной системы.
Рекомендуется включить этот параметр. Он повышает производительность и предотвращает извлечение ненужных нефильтрованных данных в потоке данных.
Limitations
Поддержка Lakehouse имеет дополнительные предостережения
При работе с Lakehouse в качестве назначения данных следует учитывать следующие ограничения:
Максимальное число одновременных вычислений равно 10. Это означает, что поток данных может одновременно оценивать только 10 контейнеров. Если у вас более 10 контейнеров, необходимо ограничить количество контейнеров или ограничить количество одновременных оценок.
При записи в lakehouse поток данных отслеживает, какие файлы он записывает. Это следует стандартным практикам Lakehouse.
Но вот уловка: если другие средства (например, Spark) или процессы также записывают в ту же таблицу, они могут препятствовать добавочному обновлению. Рекомендуется избегать других пользователей при использовании добавочного обновления.
Если вам нужно использовать других авторов, убедитесь, что они не конфликтуют с процессом инкрементного обновления. Кроме того, обслуживание таблиц, например операции OPTIMIZE или REORG TABLE, не поддерживаются для таблиц, использующих добавочное обновление.
Место назначения данных должно быть установлено на фиксированную схему.
Назначение данных должно быть задано в фиксированной схеме, что означает, что схема таблицы в назначении данных должна быть фиксирована и не может изменяться. Если для схемы таблицы в назначении данных задана динамическая схема, перед настройкой добавочного обновления необходимо изменить ее на фиксированную схему.
Единственный поддерживаемый метод обновления в назначении данных — replace
Единственным поддерживаемым методом обновления в месте назначения данных является replace
, что означает, что поток данных заменяет данные в каждом контейнере в месте назначения новыми данными. Однако данные за пределами диапазона буферов не затрагиваются. Если у вас есть данные в месте назначения данных, которые старше первого ведра, инкрементальное обновление не влияет на эти данные.
Максимальное число контейнеров составляет 50 для одного запроса и 150 для всего потока данных
Каждый запрос может обрабатывать до 50 контейнеров. Если у вас более 50 контейнеров, необходимо увеличить размер контейнера или уменьшить диапазон времени, чтобы количество снизилось.
Для всего потока данных ограничение составляет 150 контейнеров. Если вы достигли этого ограничения, можно уменьшить количество запросов с помощью добавочного обновления или увеличить размер контейнера в запросах.
Различия между добавочным обновлением в потоке данных 1-го поколения и потоке данных 2-го поколения
Существуют некоторые различия в том, как выполняется добавочное обновление между потоком данных 1-го поколения и потоком данных 2-го поколения. Ниже приведены основные различия.
Функция первого класса: постепенное обновление теперь является функцией первого класса в Dataflow Gen2. В потоке данных 1-го поколения вы настроили добавочное обновление после публикации потока данных. В dataflow 2-го поколения его можно настроить непосредственно в редакторе потоков данных. Это упрощает настройку и снижает риск ошибок.
Нет диапазона исторических данных: в потоке данных 1-го поколения вы указали диапазон исторических данных при настройке добавочного обновления. В потоке данных 2-го поколения этот диапазон не указывается. Поток данных не удаляет данные из назначения, которые находятся вне диапазона корзины. Если в месте назначения есть данные, которые старше первого контейнера, на них не влияет постепенное обновление.
Автоматические параметры: в потоке данных 1-го поколения вы указали параметры добавочного обновления при его настройке. В потоке данных 2-го поколения эти параметры не указываются. Поток данных автоматически добавляет фильтры и параметры в качестве последнего шага запроса.
FAQ
Я получил предупреждение о том, что использовал тот же столбец для обнаружения изменений и фильтрации. Что это значит?
Если вы получаете это предупреждение, это означает, что столбец, указанный для обнаружения изменений, также используется для фильтрации данных. Мы не рекомендуем это сделать, так как это может привести к непредвиденным результатам.
Вместо этого используйте другой столбец для обнаружения изменений и фильтрации данных. Если данные перемещаются между контейнерами, поток данных может неправильно обнаружить изменения и создать дублированные данные в целевом месте.
Это предупреждение можно устранить с помощью другого столбца для обнаружения изменений и фильтрации данных. Или вы можете игнорировать предупреждение, если вы уверены, что данные не изменяются между обновлениями для указанного столбца.
Я хочу использовать постепенное обновление с местом назначения данных, которое не поддерживается. Что я могу сделать?
Если вы хотите использовать инкрементальное обновление с назначением данных, которое не поддерживает его, вот что можно сделать:
Включите добавочное обновление в запросе и создайте второй запрос, ссылающийся на промежуточные данные. Затем используйте второй запрос для обновления конечного назначения. Этот подход по-прежнему сокращает обработку данных из исходной системы, но вам потребуется выполнить полное обновление с промежуточных данных до конечного назначения.
Убедитесь, что вы правильно настроили размер окна и контейнера. Мы не гарантируем, что промежуточные данные остаются доступными за пределами диапазона хранилища.
Другим вариантом является использование шаблона инкрементального накопления. Ознакомьтесь с нашим руководством: инкрементальная аккумуляция данных в Dataflow Gen2.
Как мне узнать, включено ли добавочное обновление для моего запроса?
Вы можете увидеть, включено ли для вашего запроса инкрементное обновление, проверив значок рядом с ним в редакторе потока данных. Если значок содержит синий треугольник, добавочное обновление включено. Если значок не содержит синий треугольник, добавочное обновление не включено.
Мой источник получает слишком много запросов при использовании пошагового обновления. Что я могу сделать?
Вы можете контролировать количество запросов, отправляемых потоком данных в исходную систему. Here's how:
Перейдите к глобальным параметрам потока данных и найдите параметр параллельных вычислений запросов. Задайте для этого меньшее число, чтобы уменьшить количество запросов, отправленных в исходную систему. Это помогает снизить нагрузку на источник и повысить производительность.
Чтобы найти этот параметр, перейдите на вкладку >"Масштабирование глобальных параметров>", установите максимальное количество параллельных вычислений запросов.
Мы рекомендуем использовать только это ограничение, если исходная система не может обрабатывать число одновременных запросов по умолчанию.
Я хочу использовать добавочное обновление, но я вижу, что после включения поток данных занимает больше времени для обновления. Что я могу сделать?
Добавочное обновление должно ускорить поток данных, обрабатывая меньше данных. Но иногда происходит противоположное. Обычно это означает, что затраты на управление корзинами и проверка изменений занимают больше времени, чем экономия времени за счёт обработки меньшего объема данных.
Вот что можно попробовать:
Измените параметры: увеличьте размер контейнера, чтобы уменьшить количество контейнеров. Меньше контейнеров означает меньшие затраты на управление ими.
Попробуйте полное обновление. Если настройка параметров не помогает, попробуйте отключить добавочное обновление. Полное обновление может быть более эффективным для конкретного сценария.