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

Состояние аптечки

Собственные разработки
Рвав-рвав, собака Смайл говорит: «Здрям!».

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

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

Процесс разработки, часть 1

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

Пояснения от Собаки Смайла

Итак, предпосылки подобной структуры организации данных следующие:
  • Количество позиций может быть различно, в зависимости от количества сотрудников, работающих в офисе (планирование количества обязательно, так как таблеток может на всех не хватить).
  • Цена позиции, используемая для оценки стоимости аптечки, близка к реальной, для большей точности конечный потребитель может ее периодически актуализировать, или выставлять фактические цены последней закупки.
  • Срок годности позиций может быть разным даже при одинаковом названии позиции (например, в аптеке лекарства попались из разных партий). Также есть позиции без срока годности (например, медицинские ножницы), или с большим сроком годности (например, тонометр).
Есть очень важный момент: препарат может быть в наличии, но при этом просрочен, что, в свою очередь, означает, что по факту его нет.
Рвав-рвав, просроченные лекарства отправляем в утиль, однозначно!
Проверку состояния аптечки лучше делать, например, ежемесячно, то есть мы предполагаем, что сроки годности вносятся исправно, а просроченные позиции заменяются нормальными на постоянной основе :-)
Также важно понимать разницу между позициями, составляющими «джентельменский набор» (в примере использовано 20 наименований), и позициями, которые необходимо закупить (их может быть больше 20, в зависимости от размеров коллектива).
То есть первое — это некая постоянная величина, когда отсутствие чего-либо дает повод, как минимум, озаботиться данным вопросом, а второе можно планировать в зависимости от частоты наступления конкретных обстоятельств.
Рвав-рвав, проще говоря, не стоит народ на лапах — покупай бинты и йод!

Процесс разработки, часть 2

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

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

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

На этом все, будьте здоровы!

Ваш Смайл