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