Введение

OLAP — это аббревиатура OnLine Analytical Processing, то есть оперативный анализ данных. Это технология обработки данных, которая преобразует информацию из больших массивов данных в интуитивно понятную для пользователей модель — Кубы. Их можно сводить, обрабатывать и делить по необходимости. 

У кубов есть своя многомерная система координат. которая состоит из:

  • Измерений, или DimensoinsДля каждого бизнес-процесса эти измерения могу быть разными. Например, для продаж ресторанов измерением  могут считаться блюда, скидки, время. 
  • Фактов, или Facts. Это количественные данные, которые выводятся кубом на пересечении измерений. Это любые данные, отражающие количество — объемы продаж, остатки на складе.
    Также фактами можно назвать характеристики процесса, для которых реализуема операция сложения или нахождение минимумов и максимумов. 

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

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

Создание куба

Для создания куба в r_keeper: 

  1. Перейдите в меню Настройки > OLAP отчеты > Кубы и отчеты
  2. Выберите нужную группу и во вкладке Кубы появятся преднастроенные кубы
  3. Каждая схема куба характеризуется собственной главной таблицей — свойством схемы кубов и собственной структурой. Поля, они же размерности и факты, кубов необходимо выбрать из структуры Баз Данных с помощью свойства Поля куба.
    Преднастроенным кубам нельзя изменить поля. Создайте свой куб для настройки полей:
    1. Нажмите правой кнопкой мыши по полю Кубы и выберите Новый куб  
    2. Задайте название кубу и сохраните изменения
  4. Для работы со структурой куба, выберите куб и перейдите в его Свойства. Найдите поле Поля куба и нажмите на три точки для редактирования полей

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

    Окно формирования куба выглядит следующим образом:

  5. Нажмите на кнопку Ок, чтобы выйти из редактора полей
  6. Переведите куб в статус Активный и сохраните изменения

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

  1. Перейдите в меню Настройки > OLAP отчеты > Серверы отчетов
  2. Выберите нужный отчет. Скорее всего, это будет Сервер справочников
  3. Выставите свойства в разделе Основное:
    1. Строить кубы — активируйте настройку
    2. Источник данных кубов — из выпадающего списка выберет нужную базу данных
    3. Таймаут построения кубов — таймаут на пересчет одного куба
    4. Интервал ожидания данных — периодичность генерации куба
Перед просмотром отчета на основе куба необходимо куб пересчитать. Построение отчета после пересчета куба возможно только при наличии лицензии для сервера отчетов и ключа Guardant.

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

Для создания отчета:

  1. В менеджерской станции r_keeper перейдите в меню Настройки > OLAP отчеты > Кубы и отчеты
  2. Выберите отчет, который хотите построить, и нажмите на него правой кнопкой мыши для вызова контекстного меню
  3. Выберите пункт Действия > Пересчитать
    Чтобы убедиться в пересчете куба перейдите в его свойства и раскройте раздел Обработка данных. Если все прошло успешно, то в поле Время последнего пересчета будет стоять актуальная дата
  4. Нажмите на название куба правой кнопкой мыши и выберите Действия > Выполнить отчет
  5. В открывшемся окне выберите ресторан и дату, за которую нужно построить отчет
    • Нажмите на кнопку Куб, чтобы сформировать кубический отчет
    • Нажмите на кнопку Ок, чтобы сформировать отчет для печати

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

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

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

Для создания собственного кассового отчета:

  1. Создайте новый куб
  2. В свойстве Назначение укажите Для кассовых отчетов, а свойству Сист. имя укажите значение, по которому бенд в макете куба будет находить нужных куб. 
  3. Создайте новый документ. Для этого:
    1. Перейдите в меню Настройки > Печать > Документы и макеты
    2. Нажмите правой кнопкой мыши на группу Пользовательские отчеты и выберите Новый документ
    3. Введите название и переведите статус в Активный. 
  4. Перейдите на вкладку OLAP кубы и добавьте созданный раннее куб
  5. Перейдите на вкладку Макеты печати и создайте макет отчета. Подробнее о макетах читайте в статьях Справочник Документы и Макеты и Редактор макетов
  6. Выберите созданный макет и перейдите в его Свойства
  7. Активируйте настройку Строить на сервере отчетов
  8. Сохраните изменения
  9. Перейдите в меню Настройки > Печать > Схемы печати
  10. Выберите используемую схему печати
  11. Перейдите на вкладку Представления документов
  12. Нажмите правой кнопкой мыши на поле с документами и выберите Добавить представление документа
  13. В дереве документов найдите созданный ранее документы и нажмите ОК
  14. Сохраните изменения.

Возможные ошибки

При настройке свойств куба может возникнуть ошибка 5003:

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

В этом случае необходимо убрать фильтр пересчета.

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