====== Кейс: Использование константы из справочника в OLAP-кубе ======
Частый кейс: нужно сопоставить (перемножить, поделить, сравнить) одни значения с другими.
Предположим, мы хотим посчитать цену отгруженного товара. Или посчитать ставку сотрудников по трудозатратам. \\
Разберемся на яблоках. =)
{{ :product:olap:apples.png?nolink&150 }}
Чтобы всё получилось как надо, нам нужно 2 [[product:tables:about|справочника]]:
* {{fa>cog}} [[product:tables:admin:system_table|системный справочник]]
* и обычный.
Системный справочник содержит какие-то константы или, по крайней мере, значения, актуальные на протяжении какого-то времени. \\
Например:
^Дата записи^Фрукты^Цена за ед.^
|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. Создать и заполнить системный справочник =====
{{ :product:olap:table_system_illustration.png?nolink&400|}}
**Создайте системный справочник "Цена на фрукты".**
- Администрирование -> Структура базы данных -> Справочники -> создать новый справочник.
- Использовать дату -- ''Да, ручной ввод''.
- Структура записей справочника -- ''Горизонтальный список''.
- Остальные значения -- оставить по умолчанию.
- [[product:tables:admin:linking_to_objects|Привязать этот справочник]] к объекту "Система в целом".
- [[product:tables:admin:requisites|Добавить в справочник реквизит-классификатор]], который будет однозначно связывать его с другими справочниками. \\ В "яблочном" примере -- это [[product:requisites:requisite-class|реквизит-классификатор]] "Фрукты".
- Заполнить значения этого справочника:
- Администрирование -> Структура базы данных -> Справочники -> напротив нужного справочника {{product:objects:gant:edit_gant.png?nolink|edit}}
- Добавить/изменить необходимые записи.
Даты в этом справочнике должны быть более ранними, чем те, которые будут в обычном, куда пользователи будут [[product:tables:users:add_note|делать записи]]. В противном случае, даты друг друга "не найдут".
===== Шаг 2. Создать и заполнить обычный справочник =====
{{:product:tables:table_illustration_3.png?nolink&200 |}}
**Создайте справочник "Продажа фруктов".**
- Администрирование -> Структура базы данных -> Справочники -> [[product:tables:admin:new|создать новый справочник]]. \\ В настройках справочника ориентируйтесь на свои бизнес-процессы и удобство пользователей.
- [[product:tables:admin:edit|Настроить справочник по всем стандартным канонам]].
- [[product:tables:admin:requisites|Добавить в справочник реквизит-классификатор]], который будет однозначно связывать его с системным справочником. \\ В "яблочном" примере -- это [[product:requisites:requisite-class|реквизит-классификатор]] "Фрукты".
- Заполнить значения этого справочника:
- пригласить пользователей заполнить значения справочника;
- импортировать записи справочника;
- настроить [[product:forms:admin:about|форму и собирать данные]] от пользователей.
===== Шаг 3. Создать OLAP-куб и настроить его =====
==== 3.1 Новый шаблон куба ====
{{:product:olap:olap_illustration_10.png?nolink&120 |}}
**Создайте новый OLAP-куб "Цена сделок по фруктам".**
- Администрирование → Структура базы данных → OLAP-кубы -> ''Создать''.
- Заполните поля формы:
* ''Название'' -- //Цена сделок по фруктам//;
* ''Описание'' -- может помочь для поиска нужного OLAP-куба при дальнейших настройках;
* выберите иконку, чтобы было проще ориентироваться;
* ''Число цифр после запятой'' -- укажите количество знаков, до которого будут округляться значения показателей в отчетах; по умолчанию значение "2".
* чек-бокс ''Показывать только одну (последнюю по времени) запись по проекту'' оставить пустым.
* ''Режим обновления'' -- выберите в зависимости от общей нагруженности системы и размеров данных, с которыми куб будет работать. \\ Чтобы данные для пользователей в отчётах открывались быстро, выберите "Один раз в сутки" или "По таймеру". \\ [[product:settings:system:timer|Настройки таймера.]]
==== 3.2 Создать измерения ====
{{:product:olap:olap_illustration_11.png?nolink&120 |}}
- В созданном шаблоне OLAP-куба в блоке "Измерения" -> ''Создать''.
- [[product/olap/new_metering|Создайте измерение]]-дату: \\ {{ :product:olap:olap_funny_2.png?nolink |}}
- Создайте измерение-связь между справочниками -- это реквизит-классификатор "Фрукты": \\ {{ :product:olap:olap_funny_3.png?nolink |}}
Если у вас есть другие реквизиты-классификаторы в справочниках, добавьте их в измерения. Вдруг пригодятся. ;)
Так будет выглядеть блок с измерениями в примере с яблоками:
{{ :product:olap:olap_funny_1.png?nolink |}}
==== 3.3 Показатель-запрос из обычного справочника ====
{{:product:olap:olap_illustration_12.png?nolink&120 |}}
**Создайте показатель-запрос "Фруктов продано всего"**.
- В блоке "Показатели" -> ''Создать''.
- Блок "Свойства показателя OLAP-куба":
- введите название измерения -- //Фруктов продано всего//;
- "Тип показателя" -- ''Запрос'';
- "Свойства" -- поставить чек-бокс на ''Агрегация''.
- Блок "Настройки запроса":
- "Источник" -- ''Справочник'' -> выберите из списка справочник "//Продажа фруктов//" (название того справочника в который пользователи вносят информацию);
- "Реквизит" -- выберите тот **числовой** реквизит, в который пользователи вносят количество проданных фруктов. \\ //Если числовой реквизит в справочнике один, то и выбора не будет. Он встанет сюда сам.//
- "Параметры":
- "Измерение OLAP-куба" -- выберите измерение-связующее между справочниками -- //Фрукты//;
- "Дата источника" -- все даты, кроме "Системной" -- это даты, которые относятся к объекту, из которого была сделана запись в справочник; чтобы получить дату именно записи в справочник, выбирайте ''Системный'';
- "Дата OLAP-куба" -- ''Дата (точный)''.
- Сохраните изменения.
{{ :product:olap:olap_funny_4.png?nolink |}}
==== 3.4 Показатель-запрос из системного справочника ====
{{:product:olap:olap_illustration_12.png?nolink&120 |}}
**Создайте показатель-запрос "Актуальная цена на дату"**.
- В блоке "Показатели" -> ''Создать''.
- Блок "Свойства показателя OLAP-куба":
- введите название измерения -- //Актуальная цена на дату//;
- "Тип показателя" -- ''Запрос'';
- "Свойства" -- поставить чек-бокс на ''Скрытый''.
- Блок "Настройки запроса":
- "Источник" -- ''Справочник'' -> выберите из списка справочник "//Цена на фрукты//" (название системного справочника);
- "Реквизит" -- выберите тот **числовой** реквизит, куда внесена цена на фрукты. \\ //Если числовой реквизит в справочнике один, то и выбора не будет. Он встанет сюда сам.//
- "Параметры":
- "Измерение OLAP-куба" -- выберите измерение-связующее между справочниками -- //Фрукты//;
- "Дата источника" -- ''Системный'';
- "Дата OLAP-куба" -- ''Дата (относительный)''.
- Сохраните изменения.
{{ :product:olap:olap_funny_5.png?nolink |}}
==== 3.5 Показатель-формула, чтобы посчитать ====
{{:product:olap:olap_illustration_13.png?nolink&120 |}}
**Создайте показатель-формулу "Цена сделки"**.
- В блоке "Показатели" -> ''Создать''.
- Блок "Свойства показателя OLAP-куба":
- введите название измерения -- //Цена сделки//;
- "Тип показателя" -- ''Формула'';
- "Свойства" -- поставить чек-бокс на ''Агрегация''.
- Блок "Формула" -> последовательно ''Добавить'' показатель //Актуальная цена на дату//, знак %%*%%, показатель //Фруктов продано всего//.
- Сохраните изменения.
{{ :product:olap:olap_funny_6.png?nolink |}}
------------------------
{{ :product:olap:olap_illustration_6_1.png?nolink&800 |}}
===== Шаг 4. Проверить, что получилось =====
{{:product:olap:olap_illustration_14.png?nolink&130 |}}
**Создайте [[product:reports:olap|OLAP-отчёт]], чтобы проверить, что получилось.**
- Рабочий стол ADVANTA (Главная страница) -> в модуле слева "Мои отчёты" -> "+ Добавить отчёт".
- Выберите в блоке с отчётами OLAP-куб с //"Цена сделок по фруктам"//.
- Выберите в [[product:reports:filters|фильтре]] те объекты, к которым привязан справочник, куда пользователи вносят данные.
- Посмотрите, что получилось.
Вероятно, у вас возникнет вопрос, как вытащить, поменять поля, которые формируются показателями OLAP-куба. \\
Они находятся не в блоке "Вывести список скрытых колонок", а прячутся в "Заголовках полей данных":
{{ :product:olap:olap_funny_7.png?nolink |}}
{{ :product:olap:olap_funny.gif?nolink |}}
---------------------
См. также:
* [[product:olap:case_index|как посчитать количество записей в справочнике]];
* [[product/olap/case_average_bill|как узнать средний чек по сделкам.]]