Подсчет рабочих/нерабочих дней

При анализе трендов транзакций в разные периоды года могут возникать характерные проблемы, связанные с невозможностью быстрого определения статуса дня (рабочий, выходной или сокращенный) для определения зависимостей. Данный демопример позволяет присвоить статус дня по каждой дате операций и подсчитать рабочие/нерабочие/сокращенные дни с помощью Loginom.

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Запустить демо

Установить локально

Описание алгоритма

1. Импорт данных

Импорт данных файла data.xlsx

Таблица «Импорт данных»

Имя Метка
client_id ID клиента
data Дата транзакции
sum Сумма

2. Запрос календаря

a) Производственный календарь

В данной подмодели происходит запрос производственного календаря и присвоение статуса дня каждой дате из входного набора.

В подмодели Присвоение и выделение года с помощью узла Дата и время каждой дате входного набора присваивается год, а также с помощью узла Группировка выделяется первая и последняя дата каждого года. В узле Сотрировка выполняем сортировку поля Дата(год) по возрастанию.

В подмодели Запрос производственного календаря осуществляется 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).