Инкрементное обновление кастомных коннекторов в Power BI

Инкрементное обновление кастомных коннекторов в Power BI

Хорошие новости: кастомные коннекторы для Power BI поддерживают инкрементное обновление!

Теперь не надо каждый раз запрашивать данные за несколько лет. 
Можно дополнять отчёт данными за пару последних дней или недель.

Как этого добиться?

1) Создайте ограниченный динамическими датами запрос (например от 2daysAgo до yesterday).

2) Создайте 2 параметра - RangeStart и RangeEnd формата Дата + время. Неважно чему они будут равны в Power BI Desktop. Важно чтобы их названия были именно такими.

3) Зафильтруйте дату в запросе двумя созданными параметрами - Дата больше равна RangeStart И меньше RangeEnd.

4) Выгрузите результат в модель. Нажмите правой кнопкой на таблицу и выберите "добавочное обновление": 

Далее укажите за сколько дней хотите обновлять её. Если один - будет обновляться за сегодня, если два - сегодня и вчера, если три, то позавчера-сегодня. 

Если первая дата 10daysAgo, то в обновлении можно выставить максимум 11 дней. Если в первой дате у вас 10daysAgo, а вы ставите обновлять за 12 дней, данные будут затираться, что нежелательно. Поэтому для простоты запоминания и подстраховки рекомендую выставлять одинаковое число: 
10daysAgo -> обновляем за 10 дней. Всё просто;)

5) Выгрузите всё это в Power BI Service и установите расписание обновлений.

Как это работает и где это применить:

Запрос всегда идёт в рамках дат, указанных в коннекторе (например от 10daysAgo до yesterday). Но из-за добавочного обновления Power BI Service забирает только нужные ему даты и плюсует их к остальным данным. В итоге мы можем не тянуть статистику за весь период, что очень удобно. 

Применить всё это можно на наших кастомных коннекторах, которые находятся здесь: https://github.com/morinad/all_connectors_pq. Даты в них устроены везде одинаково, поэтому все коннекторы из этой папки поддерживают инкрементное обновление.

Чтобы было удобно работать с различными ошибками, я рекомендую разделить данные на 2 запроса - базовый и обновляемый. Базовый запрос будет содержать основной пул данных и обновляться не будет, а обновляемый запрос будет каждый день дополняться данными. Если с инкрементным обновлением произойдёт ошибка, вы руками обновите оба запроса, дополнив базовый запрос последними данными и заново запустив сбор данных обновляемого запроса. Да, в случае ошибок придётся подождать общего обновления, но зато ежедневное обновление будет происходить моментально на любом (даже очень большом) клиенте.  

Плейлист с подробными инструкциями по кастомным коннекторам вы найдёте на нашем Youtube-канале: https://www.youtube.com/playlist?list=PL3du-Tm1nAm4YeyOW6ICgc8mhPtStEv6l 

Если у вас получилось настроить инкрементное обновление, обязательно напишите об этом в комментариях к статье;)

Комментарии