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

Меня зовут Алексей Розанов, я руководитель пресейл направления и работы с партнёрами ГК Luxms, вендора платформы Luxms BI.

Luxms BI — платформа бизнес-аналитики данных с высочайшим быстродействием и горизонтальной масштабируемостью. У неё мощные функциональные и визуальные возможности, а также быстрая обработка больших объёмов данных благодаря своей датацентричной архитектуре. В Реестре российского ПО.

И как человек, который постоянно общается с заказчиками, я прекрасно понимаю, насколько сложным может быть переход с одной системы бизнес-аналитики на другую. Перенос данных, настройка ETL-процессов, интеграция с текущими бизнес-процессами, полная перестройка работы ИТ-служб — всё это требует значительных усилий. А для тех, кто использует Power BI и работает с многомерными кубами, задача усложняется многократно.

Кейс: Power BI и SSAS

Рассмотрим реальный пример. У одной из компаний, которая к нам обратилась, создано в SSAS более 200 кубов.

SQL Server Analysis Services (SSAS) — это подсистема аналитических данных (VertiPaq), используемая для поддержки принятия решений и бизнес-аналитики. Она предоставляет семантические модели данных корпоративного уровня для бизнес-отчётов и клиентских приложений, таких как Power BI, Excel, Reporting Services отчёты и другие средства визуализации данных. Это дополнительный компонент, который приобретается отдельно и интегрируется с SQL Server.

Сам SQL Server можно сравнить с PostgreSQL это основная база данных, которая используется для хранения данных. Если компании требуются многомерные кубы, они покупают и настраивают SSAS как расширение, которое добавляет возможность работы с кубами.

У клиента SSAS был куплен, и на его базе было создано (и создаётся сейчас) большое количество кубов, которые активно используются. Эти кубы работают внутри SQL Server, где данные обновляются и обрабатываются, а для визуализации данных используется Power BI: в целом, классическое решение.

Рис.1 Примерная схема работы
Рис.1 Примерная схема работы

Кубы отлично подходят для сложного анализа данных, но у них есть минус: они плотно завязаны на экосистему Microsoft. Кроме этого, оказалось, что Power BI не умеет выполнять динамические расчёты на лету.

Например, если бизнесу нужно посчитать формулу “(a + b) ÷ 100”, Power BI не сможет выполнить этот расчёт самостоятельно. Пользователям придётся обращаться к ИТ-службе, чтобы добавить новую формулу в кубы. Это занимает время, требует ресурсов и очень далеко от понятий «удобно» и Self Service BI.

Почему не подошел ClickHouse

Первоначально мы предложили простой вариант: выгрузить кубы в ClickHouse и подключиться к Luxms BI. Это вообще избавило бы от необходимости использовать MDX. Но идея не подошла.

Рис.2 Первый предложенный вариант
Рис.2 Первый предложенный вариант

На первый взгляд, выгрузка данных в ClickHouse решение всех проблем. Скорость работы потрясающая, данные быстро подгружаются, но… теряется гибкость.

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

Например, для одного куба может потребоваться выгрузить до 20 различных таблиц в ClickHouse. Так как это разные таблицы, то единый источник данных отсутствует, и в некоторых случаях их нужно будет объединять для анализа, а в других — нет.

Когда речь идёт о большом количестве кубов, это может привести к созданию сотен, а иногда и тысяч витрин в ClickHouse. Управление таким массивом данных становится крайне сложным, особенно если учитывать, что кубы постоянно обновляются. Если данные из куба нужно выгружать каждый час, то возникает вопрос: выгружать все 20 таблиц или только те, которые изменились?

Если выгрузить данные по филиалам, но позже понадобится детализация по городам, придётся заново настраивать ETL-процессы. А объёмы данных огромные.

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

Создание MDX-запросов в Luxms BI

Тогда мы решили идти другим путём: интегрироваться с SSAS кубами и научить Luxms BI генерировать MDX-запросы.

MDX (Multidimensional Expressions) — язык запросов для работы с многомерными данными.

В основе решения лежит наш язык LPE (Lux Path Expressions​), который мы адаптировали для создания MDX. Мы не использовали сторонние библиотеки — весь функционал был реализован внутри нашей системы. Одним из ключевых нововведений стало обновление синтаксиса, похожего на DAX, который уже знаком многим пользователям Power BI. Теперь в LPE-выражениях нужно будет использовать квадратные скобки для ссылки на столбцы кубов (dimensions и measures). Такой синтаксис используется во всех распространенных BI-системах, и мы не хотим напрягать пользователей своими особенностями.

Рис.3 Вариант, который подошел клиенту
Рис.3 Вариант, который подошел клиенту

Таким образом мы:

  • Скрыли техническую сложность. Luxms BI «понимает» кубы так же, как раньше «понимал» таблицы в ClickHouse или Postgres;

  • Обеспечили совместимость. Бизнес продолжает использовать свои привычные кубы, но визуализирует данные на отечественном решении Luxms BI;

  • Минимизировали затраты на миграцию, особенно в части ETL.

Пользовательский интерфейс остаётся простым, а вся сложность скрыта внутри системы.

Первые результаты

Наш первый прототип уже работает. Клиент может строить отчёты, используя кубы SSAS, а данные отображаются в Luxms BI. При этом система визуализации прозрачно работает с MDX-кубами, так, как если бы данные находились в ClickHouse или PostgreSQL. Как итог, пользователи могут:

  • Использовать свои существующие кубы без необходимости сложной миграции;

  • Создавать гибкие дэшборды с расчётами на лету;

  • Постепенно переходить на новый BI, сохраняя текущие инвестиции в инфраструктуру;

  • Создавать новые проекты на современной российской платформе, используя актуальный функционал и расширяя возможности аналитики.

Скоро поддержка MDX-запросов станет доступна в коробочной версии для всех пользователей Luxms BI.

Дополнительные возможности Luxms BI

Реализация MDX-запросов ключевое решение в этом кейсе, но Luxms BI предлагает гораздо более широкий функционал, который делает нашу систему полноценной альтернативой Power BI.

Вся базовая функциональность Power BI — обработка, визуализация данных, работа с отчётами и аналитика в реальном времени и т.д. — реализована в Luxms BI на уровне, сравнимом с иностранной системой.

При работе с Luxms BI используется язык LPE гибридный язык, совмещающий задачи скриптового программирования и написания формул (альтернатива DAX). Архитектура системы включает более полусотни функций, предназначенных для реальных задач: мы адаптировали и включили в LPE наиболее востребованные на большинстве проектов функции DAX.

При этом в отличие от Power BI, Luxms BI предлагает практически неограниченные возможности кастомизации создание собственных компонентов визуализации на React, расширяя возможности для работы по сложным сценариям.


Реализация поддержки MDX-запросов в Luxms BI это лишь один из примеров того, как мы помогаем компаниям адаптироваться к новым реалиям, сохраняя привычные инструменты и процессы. Наш подход позволяет минимизировать затраты на переход, исключить риски, связанные с миграцией, и обеспечить компаниям доступ к современным технологиям.

Комментарии (1)


  1. surkenny
    30.01.2025 05:15

    Я честно не понял посыла статьи.

    Во-первых, говорится о том, что Luxms BI полноценная замена Power BI, потому что умеет использовать в качестве источника кубы. Что? У меня в реальных проектах в менее 5% источником были кубы, но ок. Но считать наличие по сути "удобного коннектора" к кубам основной причиной, почему это полноценная замена PBI - ну такое...
    Основной посыл статьи, что у вас данные в кубах и вы хотите live-connection. Ну это же совсем не всегда нужно (у меня почти никогда).

    Во-вторых,
    язык LPE — гибридный язык, совмещающий задачи скриптового программирования и написания формул (альтернатива DAX)
    Еще раз, 50 функций, 40 из которых будут математическими (типа sin, tg и тп) или строковыми?
    Как поворачивается язык назвать это альтернативой? :)
    Есть православный DAX в Visiology, есть функциональные языки в Fine Bi, PIX BI. Их тоже назвать альтернативой? Ну никто даже близко к функциональности DAX не приблизился.

    В заключение, не ругайте меня за то, что "не читал, но осуждаю!". И правда не тестировал полноценно (только игрался пару дней).
    Но не нужно использовать такие кликбейтные заголовки. Это не полноценная замена PBI. Это может быть удобной заменой для тех, кто в основном использует подключение к кубам (а другие BI это делают только через коcтыли/прослойки) и для аналитики делают только простые вычисления на конечной модели данных...