# Принцип расчета индекса
**1. Индекс** - отношение число посетителей к коммерческой площади объектов за N-периодичность, где N может принимать значения: день, неделя, месяц, квартал и год. Индекс всегда разбивается на N-периодичность.
Правила выбора периода каждой N-периодичности:
- день - календарный день
- неделя - календарная неделя (с понедельника по воскресенье)
- месяц - календарный месяц (с первого дня месяца по последний день месяца)
- квартал - календарный квартал (с первого дня квартала по последний день квартала)
- год - календарный год (с первого дня года по последний день года)
**Общая формула расчета индекса:**
[ ](https://rzn-wb-02.1c-hosting.com/uploads/images/gallery/2023-09/image-1695146709412.png), где [ -](https://rzn-wb-02.1c-hosting.com/uploads/images/gallery/2023-09/image-1695146736914.png) посещаемость объекта за m-день по счету периодичности, N - количество календарных дней в периодичности, S - площадь объекта. Например:
**Объект:** ТЦ "Солнышко"
**Площадь:** 136000 м^2.
**Посещаемость**:
День | Посещаемость |
04.09.2023 | 460 792 |
05.09.2023 | 349 621 |
06.09.2023 | 347 337 |
07.09.2023 | 339 815 |
08.09.2023 | 340 794 |
09.09.2023 | 341 773 |
10.09.2023 | 350 024 |
11.09.2023 | 395 949 |
12.09.2023 | 354 614 |
13.09.2023 | 404 033 |
14.09.2023 | 363 209 |
15.09.2023 | 369 375 |
16.09.2023 | 351 758 |
17.09.2023 | 365 543 |
Период построения: 04.09.2023 - 17.09.2023
Периодичность: Неделя
**Индекс за 04.09-10.09**: (460792+349621+347337+339815+340794+341773+350024)/136000 = **18,60**
**Индекс за 11.09-17.09**: (395949+354614+404033+363209+369375+351758+365543)/136000 = **19,15**
**2. Шаблоны** - сохраненные фильтры по атрибутам объекта для формирования индекса. У шаблона может быть указан период фиксации в виде даты начала и даты окончания (либо должна быть функция фиксации индекса за период по шаблону).
Пример шаблона:
```JSON
{
"template": {
"address": [
{
"fias_ids": [
"123123",
"123123",
"123213"
],
"representation": "Россия; Рязань; Глазань"
}
],
"area": [
{
"value": 45000,
"operator": "gte"
},
{
"value": 90000,
"operator": "lte"
}
],
"is_mall": true,
"props": [
{
"id": "uid",
"prop_name": "1706532045",
"values": [{
"id": 2,
"value": "Одежда"
}],
"operator": "eq",
"group": false
},
{
"id": "uid2",
"operator": "or",
"group": true,
"children": [
{
"id": "uid3",
"prop_name": "1706532045",
"values": [{
"id": 4,
"value": "Женская одежда"
}],
"operator": "neq",
"group": false
},
{
"id": "uid4",
"prop_name": "1706105749",
"values": [
{
"id": 42,
"value": 1
},
{
"id": 45,
"value": 3
}
],
"operator": "in",
"group": false
},
]
}
]
}
}
```
eq — равно
neq — не равно
lt — меньше
lte — меньше или равно
gt — больше
gte — больше или равно
in - находит объекты со свойством, значение которого равно одному из значений из списка
nin - находит объекты со свойством, значение которого не равно ни одному из значений из списка
is\_mall принимает значения - true, false, none. none отменяет применение фильтра
**3. Фиксация индекса**
По существующим шаблонам должен быть предусмотрен механизм фиксации индекса работающий следующим образом: строится индекс по указанным фильтрам шаблона и сохраняется за указанный период фиксации шаблона.
Фиксировать значение индекса рекомендуется в разрезе дня.
Значения индекса для фиксации строятся на основе данных посещаемости по объектам с учетом основных принципов расчета и формулы расчета индекса.
В случае если за определенный период нет данных для расчета индекса, то такой индекс заполняется в разрезе дня со значением равным 0 (нулю).
**4. Расчет индекса**
Пример запроса индекса доступен [по ссылке](https://rzn-wb-02.1c-hosting.com/books/razrabotka-3ug/page/primer-zaprosa-polucheniya-indeksa).
**Основные принципы расчета индекса:**
- Данные по объектам берутся только за период работы с объектом (атрибуты объекта: дата начала работы, дата окончания работы с объектом).
- Данные по объекту не берутся в случае если по объекту отсутствуют данные за полную N-периодичность, в ином случае данные по объекту участвуют в расчете индекса.
- В случае построение индекса по шаблону (запрос по "template" из примера запроса):
- Период построение отчета попадает в период фиксации по шаблону:
- Данные по индексу строятся из фиксированного индекса по шаблону
- Период отчета не попадает в период фиксации по шаблону:
- Данные по индексу строятся на основании данных посещаемости объектов
- Период отчета по индексу частично попадает в период фиксации по шаблону:
- За период который попадает в период фиксации данные строятся из фиксированного индекса по шаблону
- За период который не попадает в период фиксации данные на основании данных посещаемости объектов
- В случае построение индекса по объектом (запрос по "objects" из примера запроса):
- Данные строятся на основании посещаемости объектов
[Пример расчета индекса в google-таблице](https://docs.google.com/spreadsheets/d/1pDqcJS5Mw-tQOWBjtIUdc1aqNQFJ78xf7tTrG8o480k/edit?usp=sharing)