Кейс: посчитать количество записей в таблице


Это - одна из основополагающих операций для многих аналитических расчётов. Но не очень очевидная с точки зрения реализации.

Чтобы было что посчитать, нужно добавить к таблице/объекту пустой числовой реквизит.

А чтобы Система поняла, что это счётчик, в показателе OLAP-куба сделать каждую его запись константой со значением «1».

Предположим, что мы хотим посчитать, сколько раз отгружали фрукты по договорам поставки. Таблица с исходными данными называется «Фруктов отгружено».

Шаг 1. Добавить индекс

Добавьте колонку «Индекс» в таблицу «Фруктов отгружено»:

  1. Если числовой реквизит «Индекс» еще не создан, создайте его: Администрирование → Структура базы данных → Реквизиты → «Создайте новый реквизит»:
    • «Название» - Индекс;
    • «Тип реквизита» - Число;
    • «Число цифр до запятой» - 1;
    • «Число цифр после запятой» - 0;
    • «Максимальное значение» - 1;
    • «Формат» - Число.
  2. Добавьте его к нужной таблице.
  3. В настройке реквизитов в таблице → изменить в поле с реквизитом «Индекс» → снимите с него галки «Показывать» и «Обязательный». Сохраните изменения.

Шаг 2. Создать и настроить OLAP-куб

2.1 Новый шаблон куба

Создайте новый OLAP-куб «Количество транзакций»:

  1. Администрирование → Структура базы данных → OLAP-кубы → «Создать».
  2. Заполните поля формы:
  • «Название» - Количество транзакций;
  • «Описание» - может помочь для поиска нужного OLAP-куба при дальнейших настройках;
  • выберите иконку, чтобы было проще ориентироваться;
  • «Число цифр после запятой» - 0;
  • чек-бокс «Показывать только одну (последнюю по времени) запись по проекту» оставить пустым.
  • «Режим обновления» - выберите в зависимости от общей нагруженности Системы и размеров данных, с которыми куб будет работать.
    Чтобы данные для пользователей в отчётах открывались быстро, выберите «Один раз в сутки» или «По таймеру». Настройки таймера.

2.2 Создать измерения

  1. В созданном шаблоне OLAP-куба в блоке «Измерения» → «Создать».
  2. Создайте измерение - реквизит-классификатор. В нашем примере это «Фрукты»:

Так будет выглядеть блок с измерениями в примере с яблоками:

2.3 Показатель-запрос из таблицы

Создайте показатель-запрос «Индикатор»:

  1. В блоке «Показатели» → «Создать».
  2. Блок «Свойства показателя OLAP-куба»:
    • введите название измерения - Индикатор;
    • «Тип показателя» - «Запрос»;
    • «Свойства» - поставить чек-бокс на «Агрегация» и на «Скрытый».
  3. Блок «Настройки запроса»:
    • «Источник» - «Таблица» → выберите из списка таблицу «Фруктов отгружено» (название той таблицы, в которую пользователи вносят информацию);
    • «Реквизит» - выберите тот числовой реквизит, в который пользователи вносят количество проданных фруктов. Если числовой реквизит в таблице один, то и выбора не будет. Он встанет сюда сам;
    • «Параметры»:
      • «Измерение OLAP-куба» - выберите ранее созданное измерение – Фрукты;
      • «Дата источника» - все даты, кроме «Системной» - это даты, которые относятся к объекту, из которого была сделана запись в таблицу; чтобы получить дату именно записи в таблицу, выбирайте «Системный»;
      • «Дата OLAP-куба» - «Дата (точный)».
  4. Сохраните изменения.

2.4 Показатель-формула, чтобы посчитать

Создайте показатель-формулу «Количество сделок»:

  1. В блоке «Показатели» → «Создать».
  2. Блок «Свойства показателя OLAP-куба»:
    • введите название измерения - Количество сделок;
    • «Тип показателя» - «Формула»;
    • «Свойства» - поставить чек-бокс на «Агрегация».
  3. Блок «Формула» → выбрать «Константа» → указать «1».
  4. Сохраните изменения.

Куб готов. Вы можете использовать его для дальнейших вычислений. Например, чтобы узнать сумму среднего чека.

Проверить, что Система посчитала, можно через создание OLAP-отчёта.