Управляющий дэш
Управляющий дэш — дэш, предназначенный для настройки и фильтрации данных в аналитических дэшах.
По-умолчанию в управляющем дэше строковые размерности отображены как чек-боксы,
размерности типа “период” отображены календарем с выбором диапазона дат для отображения,
для численных размерностей используется ползунок, для выбора численного диапазона для отображения.
Блоки конструктора
Логика работы конструктора для данного дэша представлена в расширенном руководстве пользователя.
JSON-конфигурация
Ключи title (глава 1.2.1), frame (глава 1.2.3) работают аналогично описанию в руководстве по конфигурации дэшлетов в соответствующих блоках.
Далее представлена таблица ключей, поддерживаемых дэшем “Управляющий дэш”.
dataSource
В управляющем дэше указывается только массив размерностей, которые необходимо фильтровать. Все размерности должны быть указаны в массиве dimensions и на оси xAxis
Опции koob, dimensions, sortBy, xAxis, из секции dataSource подробно описаны в руководстве по конфигурации дэшлетов (глава 1.2.4).
Название ключа | Возможные значения | Описание |
---|---|---|
title | Строка | Указание заголовка для показателя, отображаемого в легенде и всплывающей подсказке (если редактируется показатель, лежащий на оси Y), либо изменение подписи показателя на оси (если редактируется показатель, лежащий на оси Х). |
type | string / radio | Значение string указывается тогда, когда необходимо отобразить чек-боксами размерность типа “число” или “период”. Значение radio указывается тогда, когда необходимо ограничить возможность выбора одним показателем (radiobutton). |
calendarType | simple / complex | значение simple указывается для отображения только простого календаря, а complex - для отображения только сложного календаря. |
granularity | day/ week/ month/ quarter/ year | Массив с перечислением доступных типов периода: день(day), неделя(week), месяц(month), квартал(quarter), год(year). Работает только для размерностей типа “Период”. |
defaultGranularity | day/ week/ month/ quarter/ year | Включенный по умолчанию тип периода. Работает только для размерностей типа “Период”. |
timepicker | boolean | Если true, то выводятся поля ввода для указания времени начала диапазона и конца. Используется, если размерность типа timestamp. По-умолчанию false |
Внимание! С версии 9.3.2 luxmsbi-web айди справочников автоматически отображаются как числовые значения. Для отображения заголовков справочника необходимо указать type: ‘STRING’.
Для указания конкретной работы радиобаттонов необходимо в конфигурации куба указать defaultValue с конкретным показателем (описано ниже).
Правила указания данных стилей представлены в руководстве по конфигурации дэшлетов (глава 1.2.4).
options
Описывает различные дополнительные настройки при отображении деша.
Пример указания:
"options": ["Fixed"].
Название ключа | Описание |
---|---|
Fixed | При включенной опции дэш закреплен на экране при скроллировании. |
EastPanel | Дублирование дэша в правой выдвигающейся панели. |
!TopBar | Скрыть заголовок дэша. |
Hidden | Сокрытие дэша. |
Transparent | Фон дэша соответствует фону подложки дэшборда. |
ApplyFilterButtons | Включает режим фильтрации после подтверждения действия (кнопка применения фильтров и отмены). |
ResetButton / !ResetButton | Опция управляющего дэша, которая позволяет показать/скрыть иконку “Очистить все фильтры” и “Сбросить фильтр” в зависимости от уровня, на котором опция указана. По умолчанию у управляющего дэша и у размерности установлено ResetButton , если у размерности указан тип radio - !ResetButton |
ResetButtonToDefault / !ResetButtonToDefault | опция управляющего дэша, которая позволяет показать/скрыть иконку “Сбросить фильтры по умолчанию” в зависимости от уровня, на котором опция указана. По умолчанию у управляющего дэша установлено ResetButtonToDefault , у размерности !ResetButtonToDefault , если у размерности указан тип radio - ResetButtonToDefault |
SearchAsFilter | С версии 10.0.1 поиск в управляющем дэше работает как поиск. Для включения режима “поиск как фильтр” указывается опция SearchAsFilter . Опция может быть указана как для всех показателей, так и выборочно |
RegexSearch | Поиск по показателям размерности фильтрует список по введенному регулярному выражению. |
Пример указания опций ResetButton
и ResetButtonToDefault
, который убирает из интерфейса кнопку “Сбросить фильтр” у конкретной размерности, кнопка “Сбросить фильтр по умолчанию” присутствует.
dataSource: {
koob: 'a.b',
style: {
category: {
type: 'radio',
options: [
'ResetButtonToDefault',
'!ResetButton',
],
},
},
Аналогичным образом сущестует возможность указать опцию PanelOpened
, которая открывает список показателей размерности по умолчанию.
dataSource: {
koob: 'a.b',
style: {
category: {
options: [
'PanelOpened',
],
},
},
Для размерностей типа “строка” поисковое поле отображется в случае, если для отображения всех показателей необходим скролл. В случае необходимости отображения поискового поля в любом варианте необходимо добавить опцию Search
и !Search
для постоянного скрытия поля.
dataSource: {
koob: 'a.b',
style: {
category: {
options: [
'Search',
],
},
},
Особенности работы с управляющим дэшем
Стилизация шапки управляющего дэша
Также существует возможность стилизации шапки и тела управляющего дэша. Для указания цвета фона управляющего дэша необходимо указать ключ bgColor
со значением HEX цвета. Для стилизации шапки управляющего дэша в объекте display
необходимо указать поле headerStyle
, в котором можно прописать следующие поля:
- color - указание цвета заголовка
- backgroundColor - указание цвета фона шапки
- textAlign - ориентация заголовка в шапке (допустимые значения: left, right, center)
Каскадные фильтры
Для реализации каскадных фильтров в конфигурации управляющего дэша необходимо прописать массив hierarchy
с указанием иерархии.
Простой календарь с указанием временного промежутка
Для отображения полей ввода для диапазона времени необходимо в блоке style для размерности типа PERIOD указать timepicker: true
.
По-умолчанию в поле ввода “время начала” указывается самое ранее время самой ранней даты. В поле ввода “время конца” указано самое позднее время последней доступной даты.
При изменении диапазона дат в поле ввода “время начала” будет указано время 00:00:00
, а в поле “время конца” 23:59:59
для отображения всего временного промежутка в выбранном диапазоне дат. В случае необходимости, введите необходимый временной промежуток для отображения ограниченного диапазона.
JSON-конфигурация данного дэша выглядит следующим образом:
{
frame: {
h: 8,
w: 3,
x: 9,
y: 0,
},
dataSource: {
koob: 'luxmsbi.test_data_timestamp_csv',
style: {
data1_time: {
timepicker: true,
},
},
xAxis: 'data1_time',
yAxis: 'measures',
dimensions: [
'data1_time'
],
},
view_class: 'filtrovator',
title: '',
}
Сложный календарь
В Luxms BI существует 2 варианта отображения календаря: простой и сложный. Сложный раскрывается растягиванием за левый нижний угол календаря. В случае необходимости отображения только одного из вариантов, необходимо использовать опцию calendarType
, принимающую 2 варианта значения:
- simple - для отображения только простого календаря;
- complex - для отображения только сложного календаря.
Ниже представлен вариант отображения сложного календаря:
Подробности работы со сложным календарем описаны в Руководстве пользователя LuxmsBI
Пример JSON-конфигурации управляющего дэша со сложным календарем:
{
"frame": {
"h": 5,
"w": 4,
"x": 7,
"y": 0,
},
"dataSource": {
"koob": 'luxmsbi.public_maxexample',
"style": {
"dt":{
"calendarType": "complex"
}
},
"xAxis": 'dt',
"yAxis": 'measures',
"dimensions": [
'dt'
],
},
"view_class": 'filtrovator',
"title": '',
}
Управляющий дэш с кнопкой подтверждения действия
Управляющий дэш может работать в двух режимах: фильтрация в режиме реального времени и фильтрация после подтверждения действия (кнопка применения фильтров и отмены). Первый режим работы включен по умолчанию. Чтобы подключить второй вариант работы фильтра, необходимо в блоке options
указать опцию ApplyFilterButtons
. После указания опции управляющий дэш будет выглядеть следующим образом:
Кнопка “Применить фильтры” становится активной после выбора показателей для фильтрации. Данные будут отфильтрованы только после нажатия на данную кнопку. Для отмены действия нажмите на кнопку “Назад”.
Переключение гранулярности на дэше с использованием управляющего дэша
В случае, если дэш подписан на фильтр типа “Период”, то с использованием управляющего дэша существует возможность переключения гранулярности дэша. Ниже представлен пример дэша “Столбики”, отображаемого данные по датам, и управляющий дэш:
Для отображения значений по месяцам необходимо открыть простой календарь для размерности и выбрать необходимый тип периода и подтвердить действие:
После выбора типа периода дэш будет отображен по выбранной гранулярности:
Пример конфигурации управляющего дэша со всеми вышеописанными опциями
Ниже представлен пример реализации управляющего дэша в простым календарем и остальными вышеописанными опциями:
{
"frame": {
"h": 5,
"w": 4,
"x": 7,
"y": 0,
},
"display": {
"headerStyle": {
"color": 'blue',
"textAlign": 'center',
"backgroundColor": 'red',
},
},
"bgColor": 'blue',
"dataSource": {
"koob": 'luxmsbi.public_maxexample',
"style": {
"sex": {
"type": 'radio',
"options": [
"PanelOpened",
"Search"
]
},
"dt":{
"calendarType": "simple",
"granularity": [
'month',
],
"defaultGranularity": 'month',
}
},
"hierarchy": [
'region=>gorod=>address',
],
"xAxis": 'sex;dt',
"yAxis": 'measures',
"dimensions": [
'sex',
'dt'
],
},
"view_class": 'filtrovator',
"title": '',
}
Книга рецептов
Настройка справочника. Сортировка по справочнику
Для корректной работы справочника необходимо создать основную таблицу, содержащую поле primary key, например, сity, а также сам справочник с тем же полем. Типы данных primary key должны совпадать.
В качестве примера рассмотрим Плоскую таблицу и управляющий дэш.
В конструкторе требуется выбрать куб из основной таблицы, затем открыть окно редактирования данного куба.
В поле config указывается следующий JSON:
{
members: {
default: {
sort: [
'title',
],
with: 'worcation_test.workation_dict',
columns: [
'city_id:id',
'city:title',
],
distinct: false,
},
},
possible_aggregations: [],
}
В данном JSON id и title - это фиксированные алиасы, которые используются для указания первичного ключа и значения, которое будет подставляться вместо него в итоговую таблицу. city_id и city — это поля в справочнике. Опция with указывает путь к справочнику.
Опция sort используется для сортировки в управляющем дэше. Есть возможность сортировать по title, также можно в справочнике создать дополнительное поле, по которому будет выполняться сортировка, но его необходимо указать в массиве columns, например,
members: {
default: {
sort: [
'srt',
],
with: 'worcation_test.workation_dict',
columns: [
'city_id:id',
'city:title',
'srt',
],
distinct: false,
},
},
Опция distinct указывает, нужно ли отображать повторяющиеся значения (true/false).
В кубе основной таблице можно ссылаться более чем на 1 справочник. Для этого нужно выбрать соответствующий столбец.
Если пользователь не создал поле primary key в основной таблице, но хочет отсортировать по полю в справочнике, то можно в справочнике указать поле, которое хотят отсортировать, и поле srt, по которому будет проходить сортировка.
{
members: {
default: {
sort: [
'srt',
],
with: 'workation_test.city_dict',
columns: [
'country:id',
'country:title',
'srt',
],
distinct: false,
},
},
possible_aggregations: [],
}
В данном примере справочник состоит из двух полей: srt и country, где country выполняет роль primary key. В поле city обоих таблицах указываются города.
В результате размерности country в управляющем дэше будут отсортированы в соответствии с полем srt.
Настройка дополнительных фильтраций в Управляющем дэше
При использовании конструкции filters() с указанием различных полей, если поля не были перечислены в рамках куба, то они не будут учитываться при выполнении select.
Для устранения возникшей проблемы необходимо конкретные деменшены (в фильтре) обязательно прописать в размерности данного куба, даже если данный деменшен не будет выводиться в дальнейшем на экран, а использоваться только в рамках запроса.
Рассматриваемый пример:
Раздел “Кубы” —> Редактирование куба, в котором мы прописываем результат требуемой функции.
Пример в подразделе SQL:
select num, order, val
from (
select 1 num, 'Заказ' order, sum(E.SECONOMY) val
from PARUS.EXEC E
where ${filters()}
union all
select num, order, val
from (
select 2 num, 'Результат' order, sum(E.FACT) val
from PARUS.EXEC E
where ${filters(NDOC_YEAR, SDOC_QUART,SQ_MONTH, DEPART_1, DEPART_2)}
)
)
В результате выполнения такого запроса данные не передаются в filters()
Для решения данной проблемы необходимо перейти в раздел с деменшенами куба, в рамках которого строим select и создаем новую размерность.
Заполняем размерность:
Название - как одно из полей для фильтрации - SDOC_QUART
ID - также SDOC_QUART
SQL выражение - SDOC_QUART
Т.е. потребуется создать размерности с теми же типами в рамках куба, которые мы указали в фильтрах в управляющем дэше.
После выполнения данных действий для каждой ранее не созданного деменшена в фильтрации - фильтры начнут корректно отрабатывать в запросе.