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

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

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

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

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

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

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

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

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

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

Ваш Смайл