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

Поиск питомцев

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

В связи с прошедшим Днем рождения, также в рамках постоянной работы над собой, мы рады представить вам свою очередную разработку — отчет c «говорящим» названием «Поиск питомцев».
Отчет построен по данным российской базы чипированых животных, данные, а представленные в отчете — общего характера.

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

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

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

Предварительным шагом описываемого решения является получение данных из веб-источника, и их обработка.
Цитата разработчика:
«…Подготовка данных для отчета осуществляется с помощью Power Query. На входе получаем URL к узловой странице с потерянными или найденными животными. Узловые страницы ведут на постраничное представление списков потерянных или найденных животных в формате „html“. На каждой странице содержится одна или несколько таблиц с карточкой животного. С помощью преобразований Power Query и написанного ряда функций данные загружаются в модель».
Ключевыми функциями механизма парсинга являются Web. Contents (загрузки данных), и List. Accumulate (прохождение и обработка в "цикле" каждой страницы и поиск последней заполненной страницы).
По итогам работы механизма парсинга итоговые данные собираются в 2-х таблицах: «Потерянные питомцы» и «Найденные питомцы».
  • Для указания базового промежутка времени на уровне Power Query были созданы параметры «Начало периода» и «Конец периода» — это даты начала и окончания периода, которые выведены в название отчета.
  • Создана таблица «Календарь» — базовая таблица, определяющая набор дат для расчета, как уже отмечалось выше, встройка календаря в данном случае избыточна.
  • Создана таблица «Меры» — техническая таблица, созданная для удобства.
  • Создана таблица «Параметры» — содержит параметры отчета, о которых говорил в самом начале (отсекаем нужный отрезок времени, но обычно это текущий календарный год).
  • Создана таблица «Объявления» — содержит консолидированные данные по питомцам, с текущей меткой их статуса.
  • Создана таблица «Геопозиция» — содержит очищенные географические данные о месте потери или нахождения питомца.
  • Создана таблица «Субъекты России» — справочник федеральных округов, субъектов и административных центров России.
  • Создана таблица «Время года» — справочник по временам года, имеющий ссылку URL на соответствующую иконку.
  • Создана таблица «Вид питомца» — справочник по видам питомцев, имеющий ссылку URL на соответствующую иконку.
  • Создана таблица «Статус питомца» — справочник по состоянию питомца, имеющий ссылку URL на соответствующую иконку.
  • Создана таблица «Пол питомца» — справочник, содержащий пол питомца, также имеющий ссылку URL н соответствующую иконку.
  • Дальше необходимо создать нужные связи в получившейся модели данных — это один из важнейших этапов любой разработки в Power BI:
Поиск питомцев: модель
  • Затем при помощи DAX можно формировать нужные аналитические разрезы, например, произвести расчет количества случаев потери и нахождения питомцев.
  • Последний шаг — это дизайн, тут мы придерживаемся единого стиля, отчет построен на использовании стандартных элементов.

Особенности решения

  • В связи с разнообразием в вариациях обозначения географических данных, а также отсутствием их нормализации, как и невозможности на это повлиять, для корректной работы отчета в периоды, отличные от 2019 года, необходимо расширить справочник географических названий, исходя из имеющихся данных.
  • Для размещения иконок непосредственно в визуальном элементе «Срез», изображения должны быть доступны по URL. В данном случае, они размещены на отдельной странице нашего сайта.
Рвав-рвав, всем хорошей погоды!

Ваш Смайл