Кейс: Использование константы из таблицы в 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. Создать и заполнить системную таблицу
Создайте системную таблицу "Цена на фрукты":
- Администрирование → Структура базы данных → Таблицы → создать новую таблицу.
- использовать дату - "Да, ручной ввод";
- структура записей таблицы - "Горизонтальный список";
- остальные значения - оставить по умолчанию.
- Привязать эту таблицу к объекту "Система в целом".
- Добавить в таблицу реквизит-классификатор, который будет однозначно связывать его с другими таблицами.
В "яблочном" примере - это реквизит-классификатор "Фрукты". - Заполнить значения этой таблицы:
- добавить/изменить необходимые записи.
Даты в этой таблице должны быть более ранними, чем те, которые будут в обычном, куда пользователи будут делать записи. В противном случае, даты друг друга "не найдут".
Шаг 2. Создать и заполнить обычную таблицу
Создайте таблицу "Продажа фруктов":
- Администрирование → Структура базы данных → Таблицы → создать новую таблицу. В настройках таблицы ориентируйтесь на свои бизнес-процессы и удобство пользователей.
- Добавить в таблицу реквизит-классификатор, который будет однозначно связывать его с системной таблицей.
В "яблочном" примере - это реквизит-классификатор "Фрукты". - Заполнить значения этой таблицы:
- пригласить пользователей заполнить значения таблицы;
- импортировать записи таблицы;
- настроить форму и собирать данные от пользователей.
Шаг 3. Создать OLAP-куб и настроить его
3.1 Новый шаблон куба
Создайте новый OLAP-куб "Цена сделок по фруктам":
- Администрирование → Структура базы данных → OLAP-кубы → "Создать".
- Заполните поля формы:
- "Название" - Цена сделок по фруктам;
- "Описание" - может помочь для поиска нужного OLAP-куба при дальнейших настройках;
- выберите иконку, чтобы было проще ориентироваться;
- "Число цифр после запятой" - укажите количество знаков, до которого будут округляться значения показателей в отчетах; по умолчанию значение "2";
- чек-бокс "Показывать только одну (последнюю по времени) запись по проекту" оставить пустым;
- "Режим обновления" - выберите в зависимости от общей нагруженности Системы и размеров данных, с которыми куб будет работать. Чтобы данные для пользователей в отчётах открывались быстро, выберите "Один раз в сутки" или "По таймеру".
Настройки таймера.
3.2 Создать измерения
- В созданном шаблоне OLAP-куба в блоке "Измерения" → "Создать".
Так будет выглядеть блок с измерениями в примере с яблоками:
3.3 Показатель-запрос из обычной таблицы
Создайте показатель-запрос "Фруктов продано всего":
- В блоке "Показатели" → "Создать".
- Блок "Свойства показателя OLAP-куба":
- введите название измерения - Фруктов продано всего;
- "Тип показателя" - "Запрос";
- "Свойства" - поставить чек-бокс на "Агрегация".
- Блок "Настройки запроса":
- "Источник" - "Таблица" → выберите из списка таблицу "Продажа фруктов" (название той таблицы, в которой пользователи вносят информацию);
- "Реквизит" - выберите тот числовой реквизит, в который пользователи вносят количество проданных фруктов. Если числовой реквизит в таблице один, то и выбора не будет. Он встанет сюда сам;
- "Параметры":
- "Измерение OLAP-куба" - выберите измерение-связующее между таблицами - Фрукты;
- "Дата источника" - все даты, кроме "Системной" - это даты, которые относятся к объекту, из которого была сделана запись в таблицу; чтобы получить дату именно записи в таблице, выбирайте '"Системный";
- "Дата OLAP-куба" - "Дата (точный)".
- Сохраните изменения.
3.4 Показатель-запрос из системной таблицы
Создайте показатель-запрос "Актуальная цена на дату":
- В блоке "Показатели" → "Создать".
- Блок "Свойства показателя OLAP-куба":
- введите название измерения - Актуальная цена на дату;
- "Тип показателя" - "Запрос";
- "Свойства" - поставить чек-бокс на "Скрытый".
- Блок "Настройки запроса":
- "Источник" - "Таблица" → выберите из списка таблицу "Цена на фрукты" (название системной таблицы);
- "Реквизит" - выберите тот числовой реквизит, куда внесена цена на фрукты. Если числовой реквизит в таблице один, то и выбора не будет. Он встанет сюда сам;
- "Параметры":
- "Измерение OLAP-куба" - выберите измерение-связующее между таблицами - Фрукты;
- "Дата источника" - "Системный";
- "Дата OLAP-куба" - Дата (относительный).
- Сохраните изменения.
3.5 Показатель-формула, чтобы посчитать
Создайте показатель-формулу "Цена сделки":
- В блоке "Показатели" → "Создать".
- Блок "Свойства показателя OLAP-куба":
- введите название измерения - Цена сделки;
- "Тип показателя" - "Формула";
- "Свойства" - поставить чек-бокс на "Агрегация".
- Блок "Формула" → последовательно "Добавить" показатель Актуальная цена на дату, знак *, показатель Фруктов продано всего.
- Сохраните изменения.
Шаг 4. Проверить, что получилось
Создайте OLAP-отчёт, чтобы проверить, что получилось:
- Рабочий стол ADVANTA (Главная страница) → в модуле слева "Мои отчёты" → "+ Добавить отчёт".
- Выберите в блоке с отчётами OLAP-куб с "Цена сделок по фруктам".
- Выберите в фильтре те объекты, к которым привязана таблица, куда пользователи вносят данные.
- Посмотрите, что получилось.
Вероятно, у вас возникнет вопрос, как вытащить, поменять поля, которые формируются показателями OLAP-куба. Они находятся не в блоке "Вывести список скрытых колонок", а прячутся в "Заголовках полей данных":
См. также:





