Записки охотника

Рабочее время

Собственные разработки
Рвав-рвав, собака Смайл на связи!

Представляем вашему вниманию свою 2-ю разработку комплекта отчетности «Офисная жизнь» — отчет «Рабочее время», иллюстрирующий доступность сотрудников в плане выполнения поставленных задач.

Описание решения

Отчет реализован при помощи DAX и Power Query. А также в него встроен производственный календарь. При этом, используемый производственный календарь взят не из собственной разработки (см. отчет «Производственный календарь»), а с сайта компании «КонсультантПлюс».
Рвав-рвав, с парсингом производственного календаря помог один замечательный человек Михаил Музыкин, но разрезы, необходимые для построения указанного отчета – это творчество вашего покорного слуги.
Помимо распределения нерабочих дней согласно указанному производственному календарю, отчет содержит следующие расчеты, которые можно получить по каждому сотруднику:
  • Количество рабочих дней.
  • Количество дней отпуска.
  • Количество взятых отгулов.
  • Количество дней по больничному листу.
Рабочее время: представление данных
Отчет содержит 3 листа:
  • Лист «Навигатор» — титульный лист отчета, содержащий навигационное меню, маркетинговую информацию, и контакты для связи с разработчиком решения.
  • Лист «Рабочее время» — собственно, сам отчет, содержащий сводные и детальные данные по сотрудникам.
  • Лист «Информация» — памятка пользователя.
Основные элементы:
  • «Матрица» с условным форматированием.
  • «Карточка» нового образца.
  • «Срез» в виде простого и выпадающего списков.
Дополнительные элементы:
  • Навигатор.
  • Скрывающаяся панель фильтров.
  • Кнопка.
  • Иконка.
  • Изображение.
  • Текстовое поле.
  • Эмодзи.

Процесс разработки

  • Для указания базового промежутка времени на уровне Power Query были созданы параметры «Начало периода» и «Конец периода» — это даты начала и окончания периода, которые выведены в название отчета.
  • Создана таблица «Календарь» — базовая таблица, определяющая набор дат для расчета, а также классификацию дней, участвующих в выборке данных.
  • Создана таблица «Меры» — техническая таблица, созданная для удобства.
  • Создана таблица «Параметры» — содержит параметры отчета, о которых говорил в самом начале (отсекаем нужный отрезок времени, но обычно это календарный год).
  • Создана таблица «Период отсутствия» — содержит набор исходных данных, который имеет минимально необходимую структуру, а именно: фамилию, имя и отчество сотрудника, начальную и конечную даты его отсутствия, а также его причину.
  • Создана таблица «Легенда» — таблица, являющаяся фильтром, и описывающая цветовое обозначение.
  • Создана таблица «Отсутствие по датам» — таблица содержит перечень дат отсутствия и причину по каждому сотруднику, в виде, при котором каждая строка таблицы представляет собой одну конкретную дату.
  • Создана таблица «Общий список дат» — таблица содержит общий перечень дат за указанный период по каждому сотруднику, в виде, при котором каждая строка таблицы представляет собой одну конкретную дату.
Рвав-рвав, на этом работы с Power Query завершены.
  • Дальше не забываем создать нужные связи в нашей модели данных — это один из важнейших этапов в любой разработке на Power BI:
Рабочее время: модель данных
  • Затем, при помощи DAX, начинаем формировать нужные аналитические разрезы, например, производим деление общего массива данных, сформированного в таблице «Общий список дат» на дополнительные составляющие: рабочие дни, нерабочие дни, и, собственно, те дни, когда сотрудник должен быть на рабочем месте, но при этом он отсутствует по обозначенной причине.
  • Далее, при помощи мер, рассчитываются сводные показатели по компании: рабочее время, время сотрудника, соответствующее отпуску, проведенное на больничном, или в отгулах.
  • Когда все готово, можно приступать к визуализации данных.
  • Последний шаг — это дизайн, но тут уже раздумий не надо, поскольку все оформлено в соответствии со стилем, используемым в предыдущих разработках.

Особенности и ключевые преимущества

  • Поскольку при формировании производственного календаря используется парсинг сайта известной компании, вам не нужно заботиться о корректности получения базовых данных. Единственное, что нужно сделать, периодически продлевать отчет на соответствующий год.
  1. При разработке сделано допущение, что сотрудник либо присутствует на работе, либо нет. Соответственно, время отсутствия сотрудника рассчитывается в днях. Частичное отсутствие в офисе (например, 1 час) не реализовано по идеологическим соображениям, поскольку нужная степень детализации может завести очень далеко. Все зависит от того, с какой точностью нужна информация, и насколько вы готовы обеспечить эту самую точность.
  • Как вы, наверное, уже поняли из описания выше, поскольку мы визуализируем все рабочее время сотрудника за указанный период времени (например, год), то, в зависимости от количества сотрудников на каждую единицу создается массив в 365 записей. Несмотря на это, простота модели обеспечивает быстрое обновление данных, и даже при 1000 сотрудников у вас не возникнет никаких проблем.
  • При разработке отчета данные исходного набора значений вносились непосредственно в Power BI (таблица «Период отсутствия»), дабы конечный файл не зависел от внешних источников. Переключение на внешние источники данных не составляет проблем.
  • Отдельно настроено отображение отчета на мобильном устройстве.
Рвав-рвав, как я уже говорил, удобство и простота — наше кредо! На этом все.
Ушел проверять миску, вдруг чего изменилось…

Ваш Смайл