Кейс: Использование константы из таблицы в 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-куба. Они находятся не в блоке «Вывести список скрытых колонок», а прячутся в «Заголовках полей данных»:
См. также:





