Содержание

Кейс: Использование константы из таблицы в OLAP-кубе


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

Предположим, мы хотим посчитать цену отгруженного товара. Или посчитать ставку сотрудников по трудозатратам.

Разберемся на яблоках.

Чтобы всё получилось как надо, нам нужно две таблицы:

Системная таблица содержит какие-то константы или, по крайней мере, значения, актуальные на протяжении какого-то времени. Например:

Дата записиФруктыЦена за ед.
01.01.2010Яблоки10
01.01.2018Яблоки50

И обычная таблица, с информацией об объёмах проданного товара:

Дата записиФруктыЕдиниц
01.06.2013Яблоки2
02.03.2015Яблоки3
30.12.2017Яблоки1
10.02.2018Яблоки4
29.10.2018Яблоки2
16.07.2019Яблоки1

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

Как это сделать в ADVANTA?

Шаг 1. Создать и заполнить системную таблицу

Создайте системную таблицу «Цена на фрукты»:

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

Шаг 2. Создать и заполнить обычную таблицу

Создайте таблицу «Продажа фруктов»:

  1. Администрирование → Структура базы данных → Таблицы → создать новую таблицу. В настройках таблицы ориентируйтесь на свои бизнес-процессы и удобство пользователей.
  2. Добавить в таблицу реквизит-классификатор, который будет однозначно связывать его с системной таблицей.
    В «яблочном» примере - это реквизит-классификатор «Фрукты».
  3. Заполнить значения этой таблицы:

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

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

Создайте новый OLAP-куб «Цена сделок по фруктам»:

  1. Администрирование → Структура базы данных → OLAP-кубы → «Создать».
  2. Заполните поля формы:

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

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

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

3.3 Показатель-запрос из обычной таблицы

Создайте показатель-запрос «Фруктов продано всего»:

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

3.4 Показатель-запрос из системной таблицы

Создайте показатель-запрос «Актуальная цена на дату»:

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

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

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

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

Шаг 4. Проверить, что получилось

Создайте OLAP-отчёт, чтобы проверить, что получилось:

  1. Рабочий стол ADVANTA (Главная страница) → в модуле слева «Мои отчёты» → «+ Добавить отчёт».
  2. Выберите в блоке с отчётами OLAP-куб с «Цена сделок по фруктам».
  3. Выберите в фильтре те объекты, к которым привязана таблица, куда пользователи вносят данные.
  4. Посмотрите, что получилось.

Вероятно, у вас возникнет вопрос, как вытащить, поменять поля, которые формируются показателями OLAP-куба. Они находятся не в блоке «Вывести список скрытых колонок», а прячутся в «Заголовках полей данных»:

См. также: