Миграция с Power BI на Visiology: как мы перевели сложнейшую аналитику без потери бизнес-логики
Честно говоря, когда мы затевали этот эксперимент, у нас были сомнения. Не из серии «получится или нет», а скорее — насколько будет больно. Идея взять сложный отчет с нетривиальной семантической моделью, различными визуализациями и метриками и просто «перенести» его в другую систему звучит... ну, слегка наивно.
Но задача была понятная: проверить на практике, можно ли переехать на Visiology и не потерять ключевую аналитику. Не в теории, а вот прямо руками.
Спойлер: точь-в-точь не получится. Но (и это важно!) все бизнес-задачи мы в итоге закрыли. Иногда элегантно, иногда через костыли, но закрыли.


Что и зачем переносили
Рабочий отчет для отделов трейд-маркетинга, продаж и полевой команды. Отчет, где видно, выполняют ли мерчандайзеры план визитов, есть ли товар на полке, как мы выглядим относительно конкурентов, прайс-мониторинг, анализ рабочего времени сотрудников — инструмент, на который бизнес реально опирается при принятии решений. Источником выступает PostgreSQL, которую наполняет вендор.
Если коротко: компания ставит цели мерчандайзерам, передает вендору, тот загружает в свое приложение, мерчандайзеры ходят по маршруту, делают фото полок, отвечают на вопросы в приложении, вендор обрабатывает фотки и различные ответы по визитам, складывает результаты в PostgreSQL.
Архитектура — пришлось думать по-другому
Первое, что выбило из колеи, — подход к модели данных. В Power BI у нас была классическая история: несколько таблиц фактов, несколько таблиц измерений, связи между ними. Схема «созвездие». В Visiology — только «звезда» (хотя на момент написания статьи Visiology уже умеют и в «созвездие». Это мы будем тестировать следующим).
И вот тут, честно говоря, мы сначала немного зависли. Нельзя просто взять и повторить ту же модель. Нужно пересобрать логику с нуля.
Что это значит на практике. Например, в Power BI у нас были Визиты → Анкеты → Вопросы в анкетах и ответы на них. В Visiology такое сделать, увы, было нельзя. Пришлось отказаться от привычной нормализованной модели и собрать набор витрин — агрегированных, заранее подготовленных. Да, это менее гибко. Да, где-то появляется дублирование. Да, поддержка становится тяжелее.
Но! После того как модель была правильно собрана, она начала работать стабильно и предсказуемо. И самое главное — позволила получить все нужные показатели.
Стоит также заметить, что Power Query Editor в Power BI имеет существенно более глубокий функционал. С другой стороны, Visiology позволяет делать SQL-преобразования, чего Power BI делать не дает. Если не углубляться в детали, то пользователю без знания SQL будет крайне проблематично преобразовать таблицу. При решении данной задачи все преобразования, а также все витрины с данными были созданы SQL-запросами. Если вы привыкли делать ETL в Power Query, будьте готовы разочароваться.
Визуализация — не всегда «из коробки», но решаемо
С визуализацией ситуация похожая. Если вы привыкли к Power BI, то поначалу будет ощущение, что «чего-то не хватает». Где-то нет привычных настроек, где-то нужно писать код. И да, иногда это раздражает. Например, хочется сделать градиент в bar chart’ах, и выясняется, что нужно лезть в JavaScript (потратили около часа на поиск решения, что в Power BI делается в пару кликов).
Понятно, что когда решение найдено, то в следующий раз применить его будет легко, но где и как искать — не всегда очевидно.
Хочешь добавить подпись на «бублик» — а это превращается в маленькое исследование: зайди в документацию, найди, что для создания подписей к «бублику» нужен отдельный синтаксис. В какой-то момент мы поймали себя на мысли: «Серьезно? Ради того чтобы добавить % от тотала, пришлось проделать столько действий?»
Хочешь зайти в магазин, как Power BI, и скачать себе визуал-календарь? Увольте, сударь, будьте любезны повторить функционал через сводную таблицу.
Далее, в отчете был инструмент, позволяющий посмотреть % выполнения задачи мерчандайзерами на визите, и можно было кликнуть на нужный KPI и увидеть рядом фотографию, сделанную в торговой точке. Пришлось искать обходной путь решения...
Но в конце концов находится решение — и оно работает. Понятно, что когда делаешь задачу впервые, всё происходит медленно. Мы убили 2 часа, чтобы раскрасить bar chart (я совсем не знаком с JS). Неприятно, знаете ли.
Не можем оставить без внимания поддержку Visiology. Тут вопросов нет — строгие 10 из 10. Помогают быстро и по делу, накидывают варианты решения задачи, всегда с примерами. Отдельное спасибо ребятам.
В итоге все нужные визуализации были реализованы. Не всегда самым коротким путем, но без потери функциональности.
DAX от Visiology — ограничения есть, но это не конец
Самый чувствительный момент — язык расчетов. Если вы работали с DAX в Power BI, то знаете, насколько он мощный. В Visiology он есть, но... скажем так, не в полном объеме.
Надо заметить, что многие функции у Visiology не реализованы, а некоторые реализованы с неполным функционалом. Но все задачи решили, кроме одной. Сейчас расскажем.
Нужно было посчитать модальную цену — самую частую.
Условно: за неделю было сделано множество визитов в множество точек популярной торговой сети. С каждого визита получили цену на продукт X. Но в реальности цена не всегда корректна: то ценник стоял не тот, то рука дернулась и фотка смазана, то ИИ не справилась с распознаванием. Вот и берем за истину ту цену, которая встречалась чаще всего.
В Power BI — одна мера, и всё работает при любых фильтрах, в любых разрезах. В Visiology это просто сделать нельзя.
Мы долго пытались решить это «красиво». Не получилось. И вот здесь пришлось принять важную мысль: иногда нужно не бороться с инструментом, а поменять подход. Пришлось вынести расчеты на уровень витрин. Это менее гибко, а скорее даже очень костно: для каждого разреза нужна отдельная витрина. Но главное — оно работает, хоть и с ограничениями, и дает корректный результат для бизнеса.
А что с производительностью? На выбранном датасете Visiology отлично справилась с задачей: наибольшая таблица имеет около 30 млн строк. Просадок по скорости работы замечено не было. Иногда даже получили прирост, так как решения, которые закрывались мерами в Power BI, пришлось закрыть предрассчитанными витринами в Visiology.
Выводы
Было ли сложно? Да. Но стоит заметить, что для теста была специально взята комплексная модель и отчет с большим количеством различных метрик и визуализаций.
Реализуемо? Определенно да.
Visiology не позволяет просто взять и скопировать Power BI один в один. И если вы заходите с таким ожиданием — будет больно. Но если смотреть на задачу иначе — не «повторить инструмент», а решить бизнес-задачу — то всё встает на свои места.
Да, где-то нужно пересобрать витрины данных. Да, где-то приходится искать обходные пути. Да, иногда приходится думать там, где просто не ожидаешь подвоха.
Но в итоге:
- все ключевые метрики считаются;
- вся аналитика доступна;
- все сценарии использования закрыты.
И это, на наш взгляд, главное.
Visiology — это не российская версия Power BI, это другой инструмент. Внешне похожи, но дьявол кроется в деталях. Понятное дело, что Power BI — это стандарт в аналитике де-факто, но в текущих реалиях Visiology — замечательная альтернатива. Visiology — зрелое решение, которое реально способно тянуть сложную аналитику. Инструмент однозначно рабочий.