Кастомные коннекторы VS обычные функции в Power BI

Кастомные коннекторы VS обычные функции в Power BI

Многие слышали про кастомные коннекторы для Power BI в формате MEZ. Это файлы, которые достаточно один раз установить себе на компьютер и вы сможете обращаться к множеству источников, не предусмотренных в базовой версии Power BI. Скачать их можно здесь, это бесплатно, каждый коннектор лежит в своём репозитории: https://github.com/morinad/. 

Однако у mez-файлов есть ряд недостатков, о которых я и хочу рассказать. Я буду перечислять важные аспекты и сравнивать кастомные коннекторы MEZ с обычными функциями в Power Query. Кстати, обычные функции можно найти на нашей платформе.

Установка и хранение 

Установка кастомных коннекторов - дело нескольких минут. К сожалению многие допускают ошибки или у них просто не обнаруживаются коннекторы. Если у вас не получилось заставить работать кастомные коннекторы - придётся использовать функции. Удобство коннекторов MEZ в том, что их не нужно переносить из отчёта в отчёт. Если они правильно установлены, они доступны из любого pbix-файла. Функции же придётся копировать из файла в файл. Вариант рабочий, но не такой удобный.  

Параметризация

Первый очевидный минус кастомных коннекторов: мы не можем указать параметр при подключении к источнику. 

Почему? Всё просто - набор данных не будет обновляться. Например, вы хотите подключиться к ряду аккаунтов. Задаёте везде начальную дату 2021-06-01, но через пару месяцев решили сменить начальную дату на 2021-07-01. И тут вам приходится заходить в подключение КАЖДОГО аккаунта и править дату руками. Ссылаться на единый параметр даты нельзя.

Это один из главных недостатков MEZ - они не параметризуются. В то время как в функциях всегда можно ввести параметр "Дата Начала" и обращаться к нему во всех запросах. Поменяли значение параметра и вот все отчёты уже тянутся с другой даты. Так что функции всё же довольно удобны.

OAuth Flow

Коннекторы MEZ для Яндекса и Гугла сделаны с использованием OAuth Flow. Это процесс получения доступа к аккаунту с помощью всплывающих окон. Вам достаточно выбрать аккаунт и разрешить приложению доступ, чтобы получить данные в Power BI. OAuth Flow - удобная штука, так как не нужно искать ссылку для получения токена и совершать ряд сложных действий (особенно касается Гугла). Но в этом подходе есть и минусы. 

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

Второй минус - обычно авторизовываться приходится как в Power BI Desktop, так и в Power BI Service. А если вы зашли в отчёт через какое-то время - возможно вам снова придётся вводить логин-пароль. 

Ну и третий минус - у OAuth Flow иногда слетает работающее обновление в Power BI Service и приходится опять проходить авторизацию. 

В функциях вам придётся перейти по специальной ссылке для получения токена и разрешить доступ к вашему аккаунту. В случае функций для Гугла вам понадобится дополнительная функция для получения второго токена. В целом это чуть сложнее, чем в MEZ, но ничего сверхъестественного. И главное - всё работает и больше никаких авторизаций.

Онлайн-обновление

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

Коннекторы MEZ подключаются к системе извне - ставятся в специальную папку на вашем компьютере. Это отдельная фишка Power BI и лично у меня до сих пор нет уверенности, что завтра кастомные коннекторы будут также успешно работать. Хоть Microsoft и не планирует от них избавляться, я не верю в них как в надёжный инструмент. Недавно был прецедент внутренней ошибки Power BI Service, которая заблокировала обновление отчётов на MEZ примерно на неделю. Ошибку поправили, но осадок остался.

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

Безопасность

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

[TGBLOCK]

Соглашусь, что будет странно отправлять злоумышленникам свои файлы pbix, но бывает всякое. Например, вы можете выложить их в Power BI Service и кто-то нежелательный их скачает вместе с токенами. 

Масштабирование

Если объединить всё вышесказанное и представить, что вы хотите массово запускать рекламные отчёты в Power BI, я бы предпочёл обычные функции по ряду причин:

  1. Онлайн-обновление будет слетать очень редко.
  2. Шлюзы не потребуются, комп можно спокойно выключать.
  3. Отчёт будет параметризован и менять его легче.
  4. Файл отчёта можно копировать вместе с функциями.

В качестве итога

На мой взгляд обычные функции Power Query удобнее и проще, чем MEZ, несмотря на некоторые минусы. Как писал выше, обычные функции можно найти на нашей платформе. Также, там есть бесплатные коннекторы на Python, которые позволяют загружать данные прямо в БД - PostgreSQL, Clickhouse или MySQL. Поскольку держать данные в базе гораздо удобнее и практичнее, со временем рекомендую уходить от прямых коннекторов на Power Query и работать с базами данных.