Подсчет рабочих/нерабочих дней
При анализе трендов транзакций в разные периоды года могут возникать характерные проблемы, связанные с невозможностью быстрого определения статуса дня (рабочий, выходной или сокращенный) для определения зависимостей. Данный демопример позволяет присвоить статус дня по каждой дате операций и подсчитать рабочие/нерабочие/сокращенные дни с помощью Loginom.
Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.
Описание алгоритма
1. Импорт данных
Таблица «Импорт данных»
Имя | Метка |
---|---|
client_id | ID клиента |
data | Дата транзакции |
sum | Сумма |
2. Запрос календаря
В данной подмодели происходит запрос производственного календаря и присвоение статуса дня каждой дате из входного набора.
В подмодели Присвоение и выделение года с помощью узла Дата и время каждой дате входного набора присваивается год, а также с помощью узла Группировка выделяется первая и последняя дата каждого года. В узле Сотрировка выполняем сортировку поля Дата(год) по возрастанию.
В подмодели Запрос производственного календаря осуществляется REST-запрос к сайту https://isdayoff.ru
, ответ которого с помощью узла JavaScript переводится в табличный формат.
Далее, с помощью узла Замена, осуществляется преобразование ответа REST-запроса в буквенный формат следующим образом:
0 — Рабочий день, 1 — Выходной день, 2 — Сокращенный рабочий день.
Следующим шагом является соединение преобразованного ответа REST-запроса с календарем на год, сгенерированным с помощью компонента Генератор календаря из библиотеки silver-kit .
В данном узле происходит Внутреннее соединение полей Дата календаря и Дата транзакции.
3. Обработка результатов
Во входном порту переменных подмодели Обработка результатов присутствует возможность задать значение переменных Начало интервала, Конец интервала и Статус дня.
Переменные Начало интервала и Конец интервала отвечают за вывод данных по определенному интервалу дат и задаются в следующем формате: dd.mm.yyyy
.
Например:
Начало интервала - 01.01.2017
Конец интервала - 31.12.2017
Переменная Статус дня позволяет выбрать, какой конкретно статус дня необходимо вывести в итоговом наборе данных:
0 — Выходной день, 1 — Рабочий день, 0.5 — Сокращенный рабочий день или, если значение будет не задано, то узел выведет все исходные строки вместе со статусом дня в выходном порту с меткой "Все операции", а подсчитает дни в выходном порту с меткой "Подсчет дней".
Узел Условие отвечает за разделение сценария на две ветки, в зависимости от заданных значений переменных.
Верхняя ветка выполняется только если заданы корректные числовые значения, а нижняя, соответственно, если ничего задано.
Первым узлом в верхней ветке является узел Замена, выполняющий функцию замены текстового значения статуса дня на числовое. Это необходимо для большего удобства в последующем узле — Фильтре строк, который на основе заданного значения переменной выделяет соответствующие данной переменной значения.
Далее, числовые значения поля Статус дня обратно изменяются в текстовые для улучшения отображения.
Нижняя ветка состоит из одного узла — Параметры полей. Он выполняет функцию удаления полей, не нужных для отображения в финальной выборке.
Полученные данные в последующем узле Группировка преобразуются следующим образом:
Группа |
---|
Дата транзакции |
Статус дня |
После выделения всех дат вместе со статусом дня, подходящих по выбранному в Порту входящих переменных, данные поступают на узел Подсчет дней со следующими параметрами:
Группа |
---|
Статус дня |
Показатели |
---|
Дата транзакции (Количество) |
Полученный данные выводятся на выходной порт Подсчет дней.
Данные из узла Объединение данных, содержащие все исходные операции с проставленным статусом дня, выводятся на выходной порт Все операции.
На выходном порту подмодели Обработка результатов появится сообщение об ошибке, если будет указана неправильная переменная. Перечень допустимых переменных приведён в разделе Порт переменных подмодели Обработка результатов.
Скачайте и откройте файл в программе Loginom, которую при необходимости можно скачать бесплатно.
Минимальные требования к системе:
- Операционная система: Windows 10 и выше
- CPU x64: 2 core 1
- Оперативная память: 4 GB
- Жесткий диск: 10 GB
1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).