Рвав-рвав, с вами социально-ответственный собака Смайл!
В связи с прошедшим Днем рождения, также в рамках постоянной работы над собой, мы рады представить вам свою очередную разработку — отчет c «говорящим» названием «Поиск питомцев».
Отчет построен по данным российской базы чипированых животных, данные, а представленные в отчете — общего характера.
Описание решения
Собака Смайл выражает благодарность коллеге хозяина Дмитрию Власову за помощь в создании процедуры парсинга исходных данных.
Описание разработки, за исключением процедуры парсинга, реализованной в рамках социальной инициативы, представлено ниже.
Отчет реализован при помощи DAX и Power Query, также в него встроен параметрический календарь, хотя в данном решении он практически не используется.
Источником данных для отчета являются веб-станицы, соединенные в определенной последовательности, и преобразованные при помощи функций Power Query в табличный вид.
Географические данные, используемые в отчете, представляют собой «очищенные» позиции, то есть эти данные отличаются от оригинала. Очистка данных производилась большей частью вручную, и с удалением персональных данных, поскольку у человеков просто неисчерпаемая фантазия.
Рвав-рвав, отступление из серии «Накипело».
Собака Смайл узнал очень много в процессе обработки данных, оказывается, столица нашего государства может писаться следующим образом:
- «MOSKOV» — тут слов нет, мало того, что английский, так еще и с 2-мя (!) ошибками;
- «ГРАД МОСКОВСКИЙ» — куда уж нам без пафоса, так и хочется сказать: «Человек, у тебя, вообще-то, друг потерялся…» затем, в качестве фидбэка получил информацию, что это такой Жилой комплекс, но тогда еще хуже: «Как другие люди должны это понять?»;
- «ТВЕРСКАЯ УЛИЦА» — таки-да, товарищи, это тоже «МОСКВА» (стало понятно из контекста), но мы же с вами и так все в курсе, где это… И ничего, что такая же улица, как минимум, в Петербурге есть (рядом с Таврическим садом, если что).
Отчет содержит 6 листов:
- Лист «Навигатор» — титульный лист отчета, содержащий навигационное меню, маркетинговую информацию, и контакты для связи с разработчиком решения.
- Лист «Сводка» — лист отчета, содержащий сводные данные о количестве потерянных и найденных питомцев.
- Лист «Карта — мир» — лист отчета, содержащий детальную информацию по странам мира, за исключением России, с выделением ТОП-5 в рейтинге.
- Лист «Карта — Россия» — лист отчета, содержащий детальную информацию по регионам России, с выделением ТОП-5 в рейтинге.
- Лист «Статистика» — лист отчета, содержащий полную информацию соответствующего объявления, размещенного на портале чипированных животных.
- Лист «Информация» — памятка пользователя.
Основные элементы:
- «Кольцевой график».
- «Карточка» нового образца.
- «Карта».
- "Воронка"
- "Таблица" с условным форматированием.
Дополнительные элементы:
- Навигатор.
- Скрывающаяся панель фильтров.
- Кнопка.
- Иконка.
- Изображение.
- Текстовое поле.
- Эмодзи.
Процесс разработки
Предварительным шагом описываемого решения является получение данных из веб-источника, и их обработка.
Цитата разработчика:
«…Подготовка данных для отчета осуществляется с помощью Power Query. На входе получаем URL к узловой странице с потерянными или найденными животными. Узловые страницы ведут на постраничное представление списков потерянных или найденных животных в формате „html“. На каждой странице содержится одна или несколько таблиц с карточкой животного. С помощью преобразований Power Query и написанного ряда функций данные загружаются в модель».
Цитата разработчика:
«…Подготовка данных для отчета осуществляется с помощью Power Query. На входе получаем URL к узловой странице с потерянными или найденными животными. Узловые страницы ведут на постраничное представление списков потерянных или найденных животных в формате „html“. На каждой странице содержится одна или несколько таблиц с карточкой животного. С помощью преобразований Power Query и написанного ряда функций данные загружаются в модель».
Ключевыми функциями механизма парсинга являются Web. Contents (загрузки данных), и List. Accumulate (прохождение и обработка в "цикле" каждой страницы и поиск последней заполненной страницы).
По итогам работы механизма парсинга итоговые данные собираются в 2-х таблицах: «Потерянные питомцы» и «Найденные питомцы».
- Для указания базового промежутка времени на уровне Power Query были созданы параметры «Начало периода» и «Конец периода» — это даты начала и окончания периода, которые выведены в название отчета.
- Создана таблица «Календарь» — базовая таблица, определяющая набор дат для расчета, как уже отмечалось выше, встройка календаря в данном случае избыточна.
- Создана таблица «Меры» — техническая таблица, созданная для удобства.
- Создана таблица «Параметры» — содержит параметры отчета, о которых говорил в самом начале (отсекаем нужный отрезок времени, но обычно это текущий календарный год).
- Создана таблица «Объявления» — содержит консолидированные данные по питомцам, с текущей меткой их статуса.
- Создана таблица «Геопозиция» — содержит очищенные географические данные о месте потери или нахождения питомца.
- Создана таблица «Субъекты России» — справочник федеральных округов, субъектов и административных центров России.
- Создана таблица «Время года» — справочник по временам года, имеющий ссылку URL на соответствующую иконку.
- Создана таблица «Вид питомца» — справочник по видам питомцев, имеющий ссылку URL на соответствующую иконку.
- Создана таблица «Статус питомца» — справочник по состоянию питомца, имеющий ссылку URL на соответствующую иконку.
- Создана таблица «Пол питомца» — справочник, содержащий пол питомца, также имеющий ссылку URL н соответствующую иконку.
- Дальше необходимо создать нужные связи в получившейся модели данных — это один из важнейших этапов любой разработки в Power BI:
- Затем при помощи DAX можно формировать нужные аналитические разрезы, например, произвести расчет количества случаев потери и нахождения питомцев.
- Последний шаг — это дизайн, тут мы придерживаемся единого стиля, отчет построен на использовании стандартных элементов.
Особенности решения
- В связи с разнообразием в вариациях обозначения географических данных, а также отсутствием их нормализации, как и невозможности на это повлиять, для корректной работы отчета в периоды, отличные от 2019 года, необходимо расширить справочник географических названий, исходя из имеющихся данных.
- Для размещения иконок непосредственно в визуальном элементе «Срез», изображения должны быть доступны по URL. В данном случае, они размещены на отдельной странице нашего сайта.
Рвав-рвав, всем хорошей погоды!Ваш Смайл