Кто администрирует одновременно большое количество отчетов Power BI, наверняка сталкивался с проблемой, что часть наборов данных время от времени не обновляется по расписанию из-за каких либо проблем: серверные проблемы, ошибки в данных, неверные типы данных, удаленные столбцы, переименованные листы и пр.
Возникает вопрос - как оперативно можно узнавать о таких случаях, когда набор данных не смог обновиться по графику?
Решение "из коробки" - у каждого набора данных можно в настройках указать о необходимости отправки уведомлений о сбоях обновлений на почту:
Но я, к примеру, не читаю почту каждые несколько минут или даже каждый час, а проверяю ее в начале и конце рабочего дня. Поэтому появилась необходимость в решении, которое подразумевает более оперативно узнавать о проблемах.
Так как я существую в реалиях, когда API Power BI недоступно, то решение получилось не самое прямое и простое, но как показала практика оно работает. Если кому-то из вас оно пригодится - то я буду рад. А теперь - к решению.
Подготовка Power BI
Нужно у каждого набора данных в настройках "Запланированное обновление" указать галочку "Владелец набора данных" или указать дополнительную почту в рамках домена учетной записи Power BI. На скрине выше показано, где это можно настроить.
Подготовка Telegram
Представим, что он у вас уже есть.
А если нет - создать его достаточно быстро и просто. Я не буду писать о том, как создать себе бота telegram, т.к. об этом очень много понятных статей в интернете, зачем повторяться. Если у вас его нет, создайте, начните с ним диалог и возвращайтесь скорее.
Следующий шаг - нам нужно узнать свой ID telegram. Это понадобится для того, чтобы отправлять себе потом сообщения. Сделать это можно просто написав боту @my_id_bot. При старте общения с ним он напишет вам в ответ ваш ID:
Запомните, запиши, зафиксируйте, он нам понадобится.
Подготовка почты
Вам понадобится почта Gmail. Очень сомневаюсь, что в современных реалиях у кого-то нет используемого или хотя бы старого заброшенного почтового адреса в этом сервисе.
Это может быть корпоративная почта, в которую вы входите в Gmail, то есть та почта, которая оканчивается на ваш корпоративный домен, например @company.com. Или любая другая почта @gmail.com.
Если вы управляете рабочей областью Power BI с другого почтового сервиса (Яндекс, Mail, Outlook, The Bat™ и др.), которая никак не связана с Gmail, вы можете настроить пересылку
- или со стороны своего почтового ящика с фильтром "Отправитель" - "no-reply-powerbi@microsoft.com"
- или со стороны Gmail подключить получение всей почты со своего другого почтового сервиса
Подготовка ярлыка в почте
Для того, чтобы было проще определять необходимые письма от Microsoft о неудачной попытке обновления набора данных, лучше всего добавить ярлык и фильтр в почту.
Нужно открыть настройки, перейти во вкладку "Фильтры и заблокированные адреса" и выбрать пункт "Создать новый фильтр"
После чего, нужно указать в поле "От" адрес "no-reply-powerbi@microsoft.com" и в следующем шаге выбрать указанные на втором скрине ниже (пролистайте галерею) галочки и выбрать ярлык. Если у вас его еще нет, вы можете создать его. Имя не имеет значение, главное, чтобы вам было понятно
Ваша почта готова.
Создание Google Script
Отлично, выходим на финишную прямую. Нам осталось создать Google Script для проверки писем в ярлыке почты и отправке нам сообщений в telegram о новых письмах.
Для этого, нужно открыть https://script.google.com/home и создать проект
В открывшееся окно нового проекта нужно вставить следующий код:
function processInbox() {
var messages = GmailApp.getUserLabels()[0].getThreads(0,500);
for (var i = 0; i < messages.length; i++) {
var mails = GmailApp.getUserLabels()[0].getThreads(0,500)[i].getMessages();
for (var k = 0; k < mails.length; k++) {
var unread = mails[k].isUnread();
var subject = mails[k].getSubject();
var check = unread == true
if (check == true) {
mails[k].markRead();
UrlFetchApp.fetch("https://api.telegram.org/bot{API-Token}/sendMessage?chat_id={Ваш ID Telegram}&disable_notification=true&text=" + subject);
};
};
};
};
ВАЖНО! Не забудьте заменить {API-Token} на токен вашего бота (который вы получили при создании бота) и {Ваш ID Telegram} который вы получали в начале инструкции у бота
Кроме того, если вы хотите получать не "тихие" сообщения от бота, а с уведомлениями, то можете убрать параметр disable_notification=true
После внесения всех изменений выше не забудьте сохранить ваш скрипт, дать ему имя и запустить 1 раз для проверки, чтобы выдать все разрешения скрипту.
Настройка триггера
Ну и вишенка на торте - настройка срабатывания вашего скрипта по времени. Это делается на этой же странице, на вкладке "Триггеры"
Для этого нажмите на "Добавление триггера" и укажите вот такие параметры:
Подведем итоги
По результатам работы, проделанной вами, вы получаете:
- Настроенную почту для получения уведомлений о сбоях обновлений отчетов Power BI
- Настроенный скрипт для оперативного получения сообщений о сбоях обновлений отчетов Power BI в Telegram
Теперь вы всегда можете узнавать об ошибках и своевременно исправлять их. К слову, если видоизменить скрипт, можно отправлять уведомления куда угодно - Slack, VK или даже по СМС.
Успехов!