Кубы (OLAP-технология)

OLAP - это аббревиатура OnLine Analytical Processing, т.е. оперативный анализ данных. Пользователь получает естественную, интуитивно понятную модель данных, организуя их в виде многомерных массивов-КУБОВ (Cubes).

У каждого куба есть своя многомерная система координат. Измерениями (Dimensoins) системы координат служат основные атрибуты анализируемого бизнес-процесса (блюда, валюты. скидки, время и т.д.). 

 На пересечении координат находятся данные, количественно характеризующие процесс - факты (Facts). Другими словами, фактами можно назначать характеристики процесса, для которых имеет смысл операция сложения или нахождение min (max)

"Разрезая" куб по разным направлениям, можно получить сводные (например, по годам) или детальные (по дням) отчеты.

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

На основе кубов можно создавать любые отчеты, выбирая необходимые данные.

Справочник находится в пункте главного меню Настройки > OLAP отчеты > Кубы и отчеты

Иерархически связь можно изобразить так:

Схемы кубов -> кубы -> отчеты (связь один ко многим)

Поля (размерности и факты) кубов выбирают из структуры БД с помощью свойства "Поля куба".

Каждая схема куба характеризуется собственной главной таблицей (свойство схемы кубов) и собственной структурой. Для работы со структурой куба, дважды кликните мышью куб в области Элементы или в области значений свойства куба Поля куба.

Для формирования куба необходимо хорошо знать размещение данных в таблицах БД!

Ниже отображено окно формирования полей куба.

Основные свойства кубов, на которые слудует обратить внимание:

  • Назначение 
  • Периодичность - периодичность генерации куба
  • Тип источника
  • Таймаут построения кубов (в свойствах сервера отчетов) 

Перед просмотром отчета на основе куба необходимо куб пересчитать! Построение отчета после пересчета куба возможно только при наличии лицензии для сервера отчетов и ключа Guardant!

Создание отчетов

Важные замечания

  • в тексте запроса не допускается использование констукций group by / order by - запрос из куба сохраняется в SQL базе как представление (view), в представлениях не допускается группировка и сортировка
  • запрос обязательно должен вернуть хотя бы одно числовое значение (int, float) поле - это ограничение накладывает движок куба в менеджерской. Куб требует наличие хотя бы одного факта и обязан считать итоги по факту, считать итоги по строковому полю невозможно
  • вложенные запросы вместо указания поля таблицы некорректно обрабатывается при разборе запроса куба, решение  - собирать данные из таблиц через join и указывать нужные поля из общей выборки
  • в таблице GENERATEDPROPDATAS хранятся значения всех расширенных свойств для всех сущностей БД. Для ограничения типа сущности необходимо включать в запрос ссылку на справочник (OBJECTREFNO) и идентификатор свойства (RKTYPEIDENT)

Создание Кассового отчета

Для создания собственного (пользовательского) кассового отчета, следует выполнить следующие операции:

1. Создайте новый куб, в свойстве "Назначение" которого укажите "Для кассовых отчетов". Обязательно укажите в свойстве куба "Сист. Имя" значение, по которому бэнд в макете куба будет находить нужный куб;

2. Создайте новый документ: справочник "Документы и Макеты", выделите группу документов "Пользовательские отчеты", вызовите из нее всплывающее меню, команда "Новый документ". Заполните свойства документа: Название, Альт.название(не обязательно), Статус. На страницу документа отчета OLAP кубы добавьте свой куб;

3. На странице "Макеты печати" документа создайте макет отчета, в редакторе макета отчета добавьте необходимые секции и поля в отчет;

4. Добавьте макет отчета в используемую схему печати в одноименном справочнике.

Примечание для версии старше 7.4.21.ХХ! Для отображения на кассе отчета с сервера отчетов необходимо в свойствах макета сделать пометку об этом.

5003:Exception during cube Куб для отчетов по расходу блюд(18) procession: 'Exception Field 'SHIFTDATE' not found'
ProcessErrorException:UCSERR(5004):Exception "Exception Field 'SHIFTDATE' not found" during cube loading.

Появилось после того как я в свойствах кубов настроил фильтр на пересчет последних двух месяцев.
Снял фильтр-пропала ошибка.

В значении свойства "Тип Фильтра" выставлено "Фильтровать Данные", а следует выставить - "Фильтровать и Добавить Данные".