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


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

С помощью потоков данных можно перенести большие объемы данных в Power BI или в предоставленное хранилище вашей организации. Однако в некоторых случаях не рекомендуется обновлять полную копию исходных данных в каждом обновлении. Хорошая альтернатива — добавочное обновление, которое обеспечивает следующие преимущества для потоков данных:

  • Обновление происходит быстрее: необходимо обновить только измененные данные. Например, обновите только последние пять дней потока данных за 10 лет.
  • Обновление является более надежным: например, не требуется поддерживать длительные подключения к переменным исходным системам.
  • Потребление ресурсов уменьшается: меньше данных для обновления сокращает общее потребление памяти и других ресурсов.

Добавочное обновление доступно в потоках данных, созданных в Power BI и потоках данных, созданных в Power Apps. В этой статье показаны экраны Из Power BI, но эти инструкции применяются к потокам данных, созданным в Power BI или в Power Apps.

Замечание

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

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

Использование добавочного обновления в потоках данных, созданных в Power BI, требует, чтобы поток данных находился в рабочей области в емкости Premium. Для инкрементального обновления в Power Apps требуются планы Power Apps для каждого приложения или каждого пользователя, и оно доступно только для потоков данных, у которых Azure Data Lake Storage указан в качестве назначения.

В Power BI или Power Apps, при использовании добавочного обновления требуется, чтобы исходные данные, входящие в поток данных, имели поле DateTime, в котором добавочное обновление может фильтроваться.

Настройка добавочного обновления для потоков данных

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

Чтобы настроить таблицу с инкрементным обновлением, начните с её настройки, как любую другую таблицу.

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

Снимок экрана: Power BI с выделенным значком добавочного обновления для потоков данных.

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

Снимок экрана: диалоговое окно параметров добавочного обновления с включенным добавочным обновлением.

В следующем списке описаны параметры в окне Инкрементного обновления.

  • Переключатель включения/выключения добавочного обновления: включает или отключает политику добавочного обновления для таблицы.

  • Раскрывающийся список полей фильтра: выбрать поле запроса, по которому таблица должна быть отфильтрована для изменений. Это поле содержит только поля DateTime. Нельзя использовать добавочное обновление, если таблица не содержит поле DateTime.

    Это важно

    Выберите неизменяемое поле даты для фильтра инкрементального обновления. Если значение поля изменяется (например, с измененным полем даты ), это изменение может привести к сбоям обновления из-за повторяющихся значений в данных.

  • Хранение и обновление строк из прошлого: пример на предыдущем изображении иллюстрирует следующие несколько параметров.

    В этом примере мы определим политику обновления для хранения пяти лет данных в общей сложности и добавочном обновлении 10 дней данных. Если таблица обновляется ежедневно, для каждой операции обновления выполняются следующие действия:

    • Добавьте новый день данных.

    • Обновите данные за последние 10 дней, включая текущую дату.

    • Удалите календарные годы, которые старше пяти лет до текущей даты. Например, если текущая дата — 1 января 2019 года, 2013 год будет удален.

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

  • Обнаружение изменений данных: добавочное обновление 10 дней гораздо эффективнее, чем полное обновление пяти лет, но вы можете сделать еще лучше. При выборе флажка "Обнаружение изменений данных " можно выбрать столбец даты и времени, чтобы определить и обновить только дни изменения данных. Предполагается, что такой столбец существует в исходной системе, которая обычно используется для аудита. Максимальное значение этого столбца вычисляется для каждого из периодов в добавочном диапазоне. Если эти данные не изменились с момента последнего обновления, не нужно обновлять период. В этом примере это может дополнительно уменьшить количество дней, обновляемых с 10 до 2.

    Подсказка

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

    • Сохраните только максимальное значение этого столбца во время обновления, возможно, с помощью функции Power Query.
    • Уменьшите точность до уровня, приемлемого с учетом требований к частоте обновления.
  • Обновлять только полные периоды: представьте, что обновление запланировано на 4:00 утра каждый день. Если данные появляются в исходной системе в первые четыре часа, вы можете не учитывать их. Некоторые бизнес-метрики, такие как баррели в день в нефтяной и газовой промышленности, не являются практическими или разумными для учета на основе частичных дней.

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

Замечание

Добавочное обновление потока данных определяет даты в соответствии со следующей логикой: если обновление запланировано, добавочное обновление для потоков данных использует часовой пояс, определенный в политике обновления. Если нет расписания обновления, добавочное обновление использует время от компьютера, на котором выполняется обновление.

После настройки добавочного обновления поток данных автоматически изменяет запрос, чтобы включить фильтрацию по дате. Если поток данных был создан в Power BI, вы также можете изменить автоматически созданный запрос с помощью расширенного редактора в Power Query для точной настройки или настройки обновления. Дополнительные сведения о добавочном обновлении и его работе см. в следующих разделах.

Замечание

При изменении потока данных редактор Power Query подключается к источнику данных напрямую и не отображает кэшированные или отфильтрованные данные в потоке данных после обработки политики добавочного обновления. Чтобы проверить данные, кэшированные внутри потока данных, подключитесь из Power BI Desktop к потоку данных после настройки политики добавочного обновления и обновления потока данных.

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

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

Вычисляемые таблицы основаны на запросах, выполняемых по хранилищу данных, которые могут быть другим потоком данных. Таким образом вычисляемая таблица ведет себя так же, как связанные таблицы.

Так как вычисляемые таблицы и связанные таблицы работают одинаково, требования и шаги конфигурации одинаковы для обоих. Одно из различий заключается в том, что для вычисляемых таблиц в определенных конфигурациях добавочное обновление не может выполняться в оптимизированном режиме из-за способа построения секций.

Смена между инкрементальным и полным обновлениями

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

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

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

Поддержка часового пояса при добавочном обновлении

Добавочное обновление потока данных зависит от времени его выполнения. Фильтрация запроса зависит от дня его выполнения.

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

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

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

Добавочное обновление также можно вызвать с помощью API. В этом случае вызов API может содержать параметр часового пояса, который используется в обновлении. Использование API может быть полезным для тестирования и проверки.

Сведения о реализации добавочного обновления

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

В примерах этого раздела используется следующая политика обновления:

  • Хранение строк за последние 1 квартал
  • Обновление строк за последние 10 дней
  • Обнаружить изменения данных = Ложь
  • Обновлять только полные дни = True

Объединение разделов

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

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

Удаление старых разделов

Старые разделы, которые выходят за пределы общего диапазона, удаляются. Операция обновления с датой выполнения 1.2.2017 удаляет секцию для Q3 2016, так как она выходит за пределы общего диапазона.

Схема, показывающая старые секции, которые удаляются в потоках данных.

Восстановление после длительного сбоя

Этот пример имитирует, как система восстанавливается корректно после длительного сбоя. Предположим, что обновление не выполняется успешно, так как срок действия учетных данных источника данных истек, и проблема занимает 13 дней. Добавочный диапазон составляет всего 10 дней.

Следующая успешная операция обновления с датой запуска 1.15.2017 должна загрузить недостающие 13 дней и обновить их. Также необходимо обновить предыдущие девять дней, потому что они не были обновлены в соответствии с обычным графиком. Другими словами, добавочный диапазон увеличивается с 10 до 22 дней.

Следующая операция обновления с датой запуска 1.16.2017 позволяет объединить дни в декабре и месяцы в квартале 2016 года.

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

Инкрементное обновление Dataflow и наборы данных

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

Оба подхода работают в соответствии с указанными определениями в параметрах обновления. Дополнительные сведения: добавочное обновление в Power BI Premium

В этой статье описано инкрементальное обновление для потоков данных. Ниже приведены некоторые другие статьи, которые могут быть полезны:

Дополнительные сведения о Power Query и запланированном обновлении см. в следующих статьях:

Дополнительные сведения о модели общих данных см. в этой статье: