Это вторая часть серии «23 фичи Luxms BI, которыми мы гордимся». В первой (прочитать можно здесь) мы говорили о платформенности и архитектуре — о том, на чём держится система.
А сегодня расскажем о базе, о функционале классической BI-системы, который и делает систему BI-системой.
Этот раздел про то, без чего не обходится ни одна зрелая BI-система — визуализации, переменные, геоаналитика, сводные таблицы и внутренний язык. Мы не столько гордимся самим фактом их наличия — всё это действительно есть во многих решениях, сколько тем, как именно эти возможности реализованы в Luxms BI — у нас всё заточено под скорость, гибкость и удобство.
РАБОТА С ПЕРЕМЕННЫМИ И СЛОЖНЫЙ WHAT-IF
Инструмент для сложных аналитических сценариев
Возможность работать с переменными — одна из базовых для любой BI-системы. Но в Luxms BI реализован единый централизованный механизм работы с переменными, это полноценный инструмент для построения гибких аналитических сценариев, моделирования данных и What-if анализа. Он позволяет создавать числовые, строковые, цветовые и булевые (да/нет) переменные, использовать их в фильтрах, измерениях, расчётах и для связи между дэшлетами.


Поддерживаются как локальные переменные для конкретного атласа, так и сквозные, доступные во всей системе. Это позволяет строить сложные сценарии взаимодействия между страницами и компонентами.
Как и всю систему, переменные можно гибко настраивать в визуальной части — расположение элементов, стили, цвета, размеры, шрифты, подписи и описания. Благодаря этому What-if интерфейсы можно создавать без программирования, полностью адаптируя их под бизнес-логику проекта.
Пользователь может не только создавать и изменять переменные «на лету», но и выстраивать из них целые сценарии — задавать триггеры, условия, запуск действий по кнопке или переключателю. По сути, это инструмент для интерактивного моделирования и управления поведением дэшборда.
ПРОГНОЗИРОВАНИЕ, ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ И ВНЕШНИЕ ML-МОДЕЛИ
От аналитики фактов – к аналитике будущего
Современный BI не может ограничиваться только описанием текущего состояния данных. Мы живём в 2025 году — и от аналитических систем ожидают не только ответов на вопрос «что происходит?», но и «что будет дальше?». В Luxms BI прогнозирование стало естественным продолжением аналитического процесса.
Платформа позволяет строить прогнозы прямо в визуализациях: система дорисовывает графики на основе исторических данных и выбранного алгоритма.

Из коробки доступны три классических метода — линейная регрессия, экспоненциальное сглаживание и метод Хольта–Винтерса. Они позволяют оценивать тренды, сглаживать сезонность и выявлять аномалии без дополнительной подготовки данных.

Для более сложных сценариев можно подключать внешние ML-модели — из Python, R или Jupyter Notebook. Luxms BI поддерживает интеграцию с любыми популярными библиотеками и фреймворками: MADlib, PyTorch, LLM-модели и другими. При этом результаты работы моделей — прогнозы, вероятности, классификации — становятся частью BI-данных, их можно фильтровать, сравнивать, строить по ним графики и принимать решения прямо в BI-интерфейсе.
Такой подход уже используется в проектах наших клиентов. Например, в одном проекте на платформе Luxms BI прогнозируют динамику инфекционных заболеваний в Москве, в другом — предсказывают рост стоимости акционерного капитала и эффективность корпоративного управления. В обоих случаях BI становится не просто витриной визуализации данных, а инструментом активного моделирования и принятия решений.

Мы также активно развиваем интеграцию с генеративным ИИ: подключаем чат-боты на основе цифровых архивов и справочных систем, используем NLP-модели для анализа текстов и распознавания документов, автоматизируем доступ к BI-данным на естественном языке. Про интеграцию с Гигачатом подробно писали здесь.
Отдельно стоит упомянуть возможность подключения LLM-моделей в нашем ETL/ELT-инструменте Luxms Data Boring. Это открывает множество новых сценариев применения. Об этом расскажем подробнее в одной из следующих статей, подписывайтесь и следите за обновлениями.
Luxms BI превращается в платформу не только для анализа фактов, но и для визуальной отладки, тестирования и работы с моделями. BI становится пространством, где аналитика и искусственный интеллект работают вместе для того, чтобы понимать не только прошлое и настоящее, но и будущее.
LPE (LUX PATH EXPRESSIONS) — ВНУТРЕННИЙ ЯЗЫК ПЛАТФОРМЫ
Полноценное скриптование логики в коробке
Почти у каждой BI системы есть свой внутренний язык, но LPE — не просто язык формул. Это полноценный язык скриптов, пронизывающий все уровни Luxms BI — от кубов и визуализаций до реакций на фильтры и переменные What-if.
LPE — гибридный язык, сочетающий возможности формульных выражений и скриптового программирования. Он используется и для создания собственных показателей и размерностей, и для настройки поведения интерфейса: можно менять заголовки, фон, цвет и другие свойства визуальных элементов, программировать интерактивные реакции на действия пользователя.
LPE позволяет создавать вычисляемые поля, управлять поведением визуализаций, использовать условную логику, шаблоны, фильтры, join’ы и сложные выражения — всё это доступно как из интерфейса, так и на уровне кода.
Мы адаптировали и включили в язык наиболее востребованные на большинстве проектов функции-аналоги DAX. Сегодня реализовано более 70 функций LPE разных категорий — математические, агрегационные, строковые, логические, тригонометрические, календарные, оконные и геометрические.
Все, кто пользуется Luxms BI, так или иначе работают с LPE, просто не всегда об этом знают ;)
Аналитик может использовать LPE как привычный формульный язык вроде DAX в Power BI — рассчитывать новые показатели, задавать динамические фильтры, автоматизировать расчёты. А для разработчика — это единый синтаксис, с помощью которого он может описывать логику кубов, визуализаций, реакций и т.д.
LPE — наша собственная, оригинальная технология. Мы точно знаем, как она устроена, и можем в любой момент вносить изменения, добавлять поддержку новых источников или оптимизировать работу движка. Полная свобода и технологическая независимость, которой нет у большинства BI-вендоров.
LPE также лежит в основе и нашей новой Адаптивной модели (прочитать можно здесь).
LPE — не надстройка и не вспомогательный инструмент, а фундаментальный слой, на котором держится логика платформы. Он обеспечивает единый язык взаимодействия между данными, визуализациями и интерфейсами, связывая их в цельную систему.
Пример использования LPE
LPE позволяет не просто добавить условную логику на конкретные поля, свойства и элементы оформления. С его помощью вы можете управлять условным рендером в ячейке таблицы, настраивать форматирование текста и даже создавать на нем полноценный компонент с обработкой кликов и стилизацией по условию.
К примеру, в системе существует два уникальных типа визуализаций, чей итоговый рендер и поведение могут быть заданы одним LPE-выражением. Это «Значение» и «Текст».
Пример 1. Переключение темы интерфейса с помощью кнопок
Выбираем визуализацию типа «Значение» и переходим в блок «Отображение данных». В поле «Текстовое значение» указываем следующий lpe (приводим его вид прямо из раздела JSON Config):
dataDisplay: {
  customValue:'
    lpe:wrap(
        list(
            hash("id","light", "title", "Светлая"),
            hash("id", "dark", "title", "Темная")
).mapIt(wrap(it.title, tag="div", padding="0.125rem 0.25rem", border="1px solid black", borderRadius="10px", cursor="pointer", onClick=invoke(get(window, "__themeVC"), "setTheme", it.id))), display="flex", alignItems="center", gap="0.5rem")',
},
dataDisplay: {
  customValue:'
    lpe:wrap(
	list(
		hash("id","light", "title", "Светлая"),
		hash("id", "dark", "title", "Темная")
	).mapIt(
		wrap(
			it.title, tag="div",
			padding="0.125rem 0.25rem",
			border="1px solid black",
			borderRadius="10px", 
			cursor="pointer", 
			onClick=invoke(
				get(window, "__themeVC"),
				"setTheme", it.id
			)
		)
	), 
	display="flex", 
	alignItems="center", 
	gap="0.5rem"
)',
},Данный код создаст массив объектов [{id: "light", title: "Светлая"}, {id: "dark", title: "Темная"}] , пройдется по ней циклом map (mapIt) и вернет для каждого объекта React-узел с простой стилизацией и обработкой нажатия. Он вызывает метод сервиса по работе с темами ThemeVC, который изменяет тему по соответствующую идентификатору.
В результате на дэшборде появятся две кнопки — «Светлая» и «Темная». Нажатие на любую из них переключает тему платформы на ту, что в названии.
Пример 2. Перемещение по датам (отмотка выбранной даты на единицу периода (день, месяц или год)
У нас есть управляющий дэш, задающий фильтр на поле dt. Мы хотим добавить в интерфейс дэшборда кнопки, позволяющие «отмотать» дату, посмотреть что было на день назад от выбранной даты для всех дэшлетов, кто подписан на фильтр поля dt.
Берем ту же визуализацию и схожий подход:
dataDisplay: {
    customValue: 'lpe:wrap(list(hash("id","prev", "title", "Назад на день"),hash("id", "next", "title", "Вперед на день")).mapIt(wrap(it.title, tag="div", padding="0.125rem 0.25rem", border="1px solid black", borderRadius="10px", onClick=setKoobFilters("", "dt", ["between", (if(get(get(invoke(get(window, "__koobFiltersService"), "getModel"), "dt"), 1), get(get(invoke(get(window, "__koobFiltersService"), "getModel"), "dt"), 1), get(data, 0))), (if(get(get(invoke(get(window, "__koobFiltersService"), "getModel"), "dt"), 2), get(get(invoke(get(window, "__koobFiltersService"), "getModel"), "dt"), 2), get(data, 1)).dateShift(if(it.id = "prev", -1, 1), "d"))]))), display="flex", alignItems="center", gap="0.5rem")',
  },
dataDisplay: {'
lpe:wrap(
	list(
		hash("id","prev", "title", "Назад на день"),
		hash("id", "next", "title", "Вперед на день")
	).mapIt(
		wrap(it.title, 
			tag="div", 
			padding="0.125rem 0.25rem", 
			border="1px solid black", 
			borderRadius="10px", 
			onClick=setKoobFilters(
				"", 
				"dt", 
				[
					"between", 
					(if(
						get(
							get(
								invoke(
									get(window, "__koobFiltersService"), 
									"getModel"
								), 
								"dt"
							),
							1
						), 
						get(
							get(
								invoke(
									get(window, "__koobFiltersService"), 
									"getModel"
								),
								"dt"
							), 
							1
						), 
						get(data, 0)
					)), 
					(if(
						get(
							get(
								invoke(	
									get(window, "__koobFiltersService"), 
									"getModel"
								), 
								"dt"
							), 
							2
						), 
						get(
							get(
								invoke(
									get(window, "__koobFiltersService"), 
									"getModel"
								), 
								"dt"
							), 
							2
						), 
						get(data, 1)
					).dateShift(
						if(it.id = "prev", -1, 1), 
						"d"
					)
					)
				]
			)
		)
	), 
	display="flex", 
	alignItems="center", 
	gap="0.5rem"
)'}Данный код, аналогично первому примеру, создаёт две кнопки и при нажатии меняет значения фильтра dt на день вперед или день назад относительно выбранной даты.
Пример 3. Отображение PDF-документа по выбранной дате
Практический пример из недавнего проекта. Задача состояла в том, чтобы отобразить PDF-документ в режиме чтения, автоматически подгружаемый по выбранной в управляющем дэше дате, с фиксированным масштабом 120%.
 
Итак, есть атлас ds_11, в его ресурсах есть папка states/, где лежат PDF-файлы с именем вида 2020-01-05.pdf на каждую знаковую дату.
Нам нужно рендерить iframe, которому передается ссылка на соответствующий PDF-файл, а дальше PDF рендерится стандартными средствами браузера.
Пример конфига дэша:
dataSource: {
    koob: 'CH.report_pokazatel',
    filters: {
      pokazatel_Date: true,
    },
    measures: [
      'min(Date):min_date',
    ],
    style: {},
    yAxis: 'measures',
  },
dataDisplay: {
customValue: 'lpe:wrap("",tag="iframe", src="/srv/resources/ds_11/states/" + value + ".pdf#zoom=120", width="100%",height="100%",type="application/pdf")',
}Таким образом, каждый раз, когда дата pokazatel_Date выставляется в управляющем дэше — наш дэшлет реагирует и перезапрашивает файл, открывая его для просмотра с дефолтным зумом в 120%
Даже эти простые примеры показывают, что нам даже не всегда нужны данные или разработка, чтобы добавить тот или иной функционал на платформу.
«Функционал того, что итоговый результат будет полностью управляться через LPE, непрерывно дорабатывается. Например, в одной из версий веб-клиента расположением и условным отображением дэшлетов на дэшборде будет управлять LPE layout. Вы сможете управлять стилем и поведением дэшлетов на странице и реализовывать адаптивную логику их расположения (фильтры ли, ширина, высота экрана, What-If и многое другое)».

Илья Гурешидзе
тимлид команды фронтенда
ИНТЕРЕСНЫЕ ВИЗУАЛИЗАЦИИ
Когда говорят о BI, подразумевают как раз визуализации — графики, диаграммы, дэшборды (те самые, из всех фильмов про будущее). В них и проявляется суть аналитики – данные становятся наглядными и живыми.
В Luxms BI реализовано более 50 типов визуализаций — от стандартных столбиков и бубликов до продвинутых диаграмм, таких как Sankey, графы, воронки, пузырьковые диаграммы, географические карты и тепловые матрицы.
Например, Sankey-диаграмма часто используется для анализа логистических потоков — от страны-производителя до склада и конечного региона продаж:

Воронки – для анализа конверсий:

Графовые структуры — для выявления связей и зависимостей:

Каждая визуализация в Luxms BI — интерактивная. Можно кликать, фильтровать, углубляться в данные, настраивать динамику и взаимосвязи между показателями.
А если стандартного набора недостаточно — всегда можно добавить свои кастомные визуализации через ZIP-пакеты.
Пользователи могут загружать собственные визуализации в формате zip-архива. Не нужно ждать большого обновления или нового релиза – разработчик сам собирает и запаковывает визуализацию, а затем разворачивает её в нужной среде. Кастомные визуализации отображаются на панели выбора виджета среди стандартных вариантов и доступны для дальнейшей настройки конечным пользователям.
У нас есть традиция, каждый новый год мы с друзьями
ходим в банюделаем кастомную новогоднюю визуализацию. Как мы делали новогодние шары в прошлом году, подробно можно прочитать здесь, а новогодние елочки позапрошлого года сияют тут.
Гибкая настройка визуализаций
Визуализации в Luxms BI можно гибко настраивать — добавлять собственные тултипы, управлять условиями отображения, показывать динамику и взаимосвязи между показателями. Всё это доступно прямо из коробки, без программирования.

Интерактивность
Каждая визуализация может быть дополнена описанием и контекстом.
Можно добавить расширенное описание к дэшу — при наведении на кнопку с информацией появится всплывающее окно с введенной информацией. Это могут быть пояснения, например детали расчёта, инструкции, LPE-выражения, позволяющие динамически выводить рассчитанные значения или ссылки на документацию. Удобно для командной работы.

Визуализации в BI — это не про «красивые картинки». Это про смысл. Они позволяют представить самые разные данные в наглядной форме и подстроить аналитику под конкретные задачи, например:
- в логистике — визуализировать транспортные маршруты, 
- в промышленности — отображать схемы технологических цепочек, 
- в финансах — анализировать сложные структуры затрат. 
Визуализации в Luxms BI — это язык взаимодействия с данными, где форма напрямую усиливает смысл.
СВОДНАЯ ТАБЛИЦА – УНИВЕРСАЛЬНЫЙ ИНСТРУМЕНТ АНАЛИЗА
Продолжая тему визуализаций, нельзя не упомянуть сводную таблицу, важный инструмент для аналитики. Это не просто таблица, а целая система с гибкой настройкой структуры, можно включать или выключать измерения и факты, менять их местами, переносить строки в столбцы и обратно, фильтровать данные прямо на дэшборде. Всё это делается в визуальном интерфейсе, без кода.

Особенность реализации — гибкая «обвязка» сводной таблицы, которую можно использовать и отдельно от классического пивота. Например, вместо таблицы можно отобразить данные в виде столбиков, но сохранив весь функционал настройки всего вокруг. Это открывает возможности для создания своих кастомных таблиц.

Настроенную под себя таблицу можно сохранить как отдельный лист презентации и использовать повторно, не тратя время на перенастройку при обновлении данных, а также, конечно же, возможность выгружать в Excel — в виде отчёта или плоской таблицы для детального анализа.
Казалось бы, сводная таблица — основа основ аналитики, но именно поэтому она так востребована на фоне со всеми остальными визуализациями и дает мощные возможности для анализа. Приятно, что пользователи выделяют функционал как важное преимущество системы:
В Luxms BI обалденный функционал сводных таблиц! Пользователи могут сами настроить структуру (включить/выключить измерения и факты), переместить строки в столбцы и наоборот, выгрузить в Excel в виде плоской таблице для дальнейшего более пристального анализа. Также структуру, настроенной под себя таблицы, можно сохранить как лист презентации, и пользователям уже нет необходимости каждый раз настраивать сводную таблицу для решения повторяющихся задач на новых данных. У многих пользователей нет возможности прямого доступа к БД, а также они могут не владеть SQL, и использование сводных таблиц для них — это универсальное решение получения агрегированных выборок в нужной структуре.
Это настолько стало популярно, что во многих атласах есть дэшборд со сводной таблицей, построенной на детальных данных.

Евгений Дрензелев
техлид BI-направления в Почтатех
РЕДАКТОР ТЕМ — КАСТОМИЗАЦИЯ БЕЗ ПРОГРАММИРОВАНИЯ
Интерфейс Luxms BI можно настроить под любые задачи — гибкость платформы позволяет реализовать практически любую идею. При этом для настройки внешнего вида не всегда нужны навыки программирования, в системе предусмотрено множество инструментов для визуальной настройки интерфейса.
Он позволяет менять внешний вид интерфейса прямо из визуального редактора. Пользователи получают контроль над цветовой палитрой дэшбордов, кнопок, панелей, таблиц, выпадающих списков, а также за состоянием активных и неактивных элементов, ошибок и предупреждений. Цвета данных влияют на визуализацию графиков и диаграмм, обеспечивая единый стиль всей аналитики.
Интерфейс редактора интуитивно понятен: слева представлены все редактируемые цвета, а изменения сразу отображаются на превью дэшборда — три экрана с наиболее часто используемыми элементами. Пользователь может кликнуть на конкретный элемент на превью, вызвать пипетку и выбрать цвет для отдельного компонента, что даёт полную гибкость и точность.

После завершения настройки тема сохраняется и публикуется, становясь доступной для применения наравне со стандартными вариантами.
При этом для опытных пользователей остаётся возможность тонкой настройки через собственные стили, но основная идея — упростить оформление BI-решений, сделать их визуально единообразными и согласованными с корпоративным брендом.
Редактор тем делает кастомизацию простым и наглядным процессом, доступным аналитикам и менеджерам без привлечения разработчиков.
onClickDataPoint - ПРОГРАММИРОВАНИЕ ПОВЕДЕНИЯ ПО КЛИКУ
onClickDataPoint — так назывался ключ в JSON-конфиге, с которого всё началось. И несмотря на то, что сегодня этот функционал настраивается в визуальном редакторе (называется «Обработка событий») и не требует кода, старое название прижилось, и внутри команды его до сих пор используют.

onClickDataPoint позволяет сделать дэшборд максимально интерактивным и настраиваемым — пользователи могут задавать реакции системы на клик по любой точке визуализации. Это не просто стандартная фильтрация, через визуальный интерфейс можно управлять дриллдаунами, переменными What-if, открывать модальные окна с динамическими фильтрами, менять URL, переходить на другие дэшборды или даже во внешние системы, например, ERP. Список возможностей, которые можно настроить по клику, — действительно широкий и один из самых гибких среди BI-платформ.
В основе этого лежат LPE-выражения, но пользователю не нужно писать код, он «под капотом», а функционал доступен через понятный визуальный интерфейс.
Достаточно нескольких кликов, чтобы настроить сложное поведение, от создания меню с десятью пунктами до передачи конкретного значения по ссылке для перехода в другую систему.
onClickDataPoint — горячо любимый инструмент среди аналитиков, потому что он превращает любую визуализацию в «живую» карту действий — гибкие и понятные настройки — вы кликаете, а система мгновенно реагирует. Это один из тех инструментов, которые делают систему Luxms BI действительно интерактивной и удобной для работы с любыми сценариями.
ГЕОАНАЛИТИКА. ВСЕ, ЧТО НУЖНО НА КАРТЕ
Геоаналитика в Luxms BI — это мощный и гибкий инструмент для работы с любыми пространственными данными. Система позволяет создавать визуализации с несколькими слоями геообъектов, использовать цветовую заливку для более контекстного анализа, настраивать тепловые карты и инфографику. Объекты можно отображать маркерами, кластерами, узлами схемы или даже 3D-моделями, при этом поддерживается работа с большим количеством точек и векторной подложкой (тайлы).

Внутри Luxms BI функционал геоаналитики делится на два больших блока:
- 
Классическая геоподложка — стандартные карты, на которых можно накладывать слои, цветовые заливки и тепловые карты.  
- 
SVG-визуализации — любые SVG-изображения можно загрузить и использовать как интерактивные карты, анимировать элементы при наведении, подсвечивать регионы или объекты.  
Это позволяет создавать визуализации не только для карт городов или стран, но и для специфических бизнес-сценариев — разметка деталей станков, распределение ресурсов, интерактивные схемы производственных линий и многое другое.

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

ПРОДОЛЖЕНИЕ СЛЕДУЕТ
В следующей статье мы расскажем о том, что выходит за рамки классического BI — о функционале, который делает Luxms BI инструментом для решения специализированных задач.
Мы покажем, как работают:
- Показатели со сложным расчетом; 
- Write-back и формы ввода; 
- Регламентная отчетность. 
Следите за обновлениями, впереди много интересного о том, как BI может стать действительно рабочим инструментом для бизнеса.
 
          