Привет, Хабр.
Мы — Анастасия Карасева и Елена Веретённик, научные сотрудники Прикладного Центра МАСТ Европейского университета в Санкт-Петербурге, а этот текст — о боли работы с открытыми неагрегированными данными госзакупок. Мы сделали свой первый самостоятельный дата-проект на данных из xml контрактов по 44-ФЗ, которые доступны в российской единой информационной системе «Закупки». Эта история — о страданиях, возрождении и ряде небольших открытий, которые помогут начинающим дата-сайентистам легче и увереннее пройти похожий путь в открытых хранилищах данных.
ЕИС «Закупки» — база открытых данных, в которой размещается различная документация о закупках начиная с 2011 года: извещения, контракты и пр. Данные, как правило, хранятся в зазипованных xml на ftp сервере. Структура папок и документов строго регламентирована справочниками, альбомами и схемами. Но не всё так однозначно…
(Помимо ЕИС, открытые данные о госзакупках — уже структурированные и обработанные — можно найти на сайтах «Госзатраты» и «Госрасходы», но там представлены не все тэги из оригинальных xml-файлов. Далее мы будем использовать для сравнения обработанные версии контрактов с «Госзатрат».)
Целью нашего проекта было исследование сверхурочной работы в госзакупках в разных регионах России, и нам лучше подходили открытые и необработанные данные: там была метка о времени (таймстамп). Эта метка создаётся автоматически и отражает действие специалиста по закупкам в режиме реального времени, а значит, может служить надёжным цифровым следом его работы.
У нас был понятный план:
-
спарсить из ЕИС данные по контрактам, заключенным в соответствии с федеральным законом 44-ФЗ
-
собрать их в единый csv файл.
…
n) PROFIT.
Но проблемы начались уже на втором шаге.
Меняющиеся тэги.
ЕИС постоянно эволюционирует. За год может выйти несколько обновлений системы, в т.ч. меняется и схема тэгов в xml. Тэг – переменная, в которой скрыты разные характеристики контрактов. Тэги, как правило, многоуровневые (см. пример на матрёшке).
Одна из важнейших трансформаций в схеме контрактов — изменение тэга, обозначающего поставщиков. Начиная с версии 11.1 XSD-схемы ЕИС на смену тэгу “suppliers” пришел “suppliersInfo”. Соответственно, поменялись и все дочерние тэги, а также добавились новые, с кодами из ЕГРЮЛ и ЕГРИП. Это изменение увеличило нашу csv в разы: к 19 тэгам “suppliers” добавились 28 тэгов “suppliersInfo”. Итого — 47 колонок в csv только для поставщика. При этом колонки заполнены неравномерно по регионам и требуют объединения в одну переменную с нужным числом текстовых категорий.
Проследить эволюцию схем xml в ЕИС можно по альбомам ТФФ — документам, содержащим требования к форматам данных в рамках интеграции с ЕИС. Последняя версия на сегодня — 12.2; мы работали с версией 11.3.
Несколько поставщиков и продуктов.
При самостоятельном парсинге данных ЕИС важно учитывать, что продуктов и поставщиков в контракте может быть больше одного, — и соответственно выбирать способ хранения данных: сгруппированные данные со списками списков или же тайдизированные с одним наблюдением продукта/поставщика на строку. Второй вариант менее предпочтителен для объёмных данных, поэтому стоит присмотреться к спискам и nested json. Парсить такие данные в csv было не очень удобно, а при обработке наш сервер «Осгилиат» почти пал.
Дубликаты контрактов.
В сырых данных ЕИС оказались дубли контрактов, причём разного происхождения и свойств. Были и полные совпадения наблюдений до последнего тега, были и частичные. В зависимости от региона доля дублей варьируется от 0 до 20%.
Карта распределения дублей с 01.01.2015 по 01.07.2021
Причины появления дублей нам не ясны, но в их распределении есть определенные закономерности.
Во-первых, все дубли были обнаружены в папках с ручными выгрузками. В ЕИС есть два режима выгрузки данных — автоматический и ручной. При автоматической выгрузке данные контрактов сначала сгружаются ежесуточно (в 00:15 по Мск) в региональную папку <Наименование региона>/Contracts/currMonth, затем (в первую субботу месяца в 06:00) перемещаются в папку /prevMonth, а из /prevMonth попадают в региональную папку контрактов просто с указанием года и месяца. В том, что касается информации о времени, имена архивов в автоматической региональной выгрузке содержат только сведения о периоде, за который выполнена выгрузка.
При ручной выгрузке в названии папки остается не только период выгрузки, но и «дата и время запуска выгрузки в формате yyyymmddhhmiss, где yyyy – год, mm – месяц (номер), dd – день, hh – час, mi – минуты, ss – секунды (в часовом поясе региона выгрузки)» (Альбом ТФФ версия 11.3, с. 72-73). Период выгрузки в этом случае не всегда составляет месяц, иногда это может быть всего несколько дней. Зачем проводятся ручные выгрузки, нам неизвестно. Отличия имен архивов в автоматической и ручной выгрузках см. на скриншоте.
Во-вторых, выборочный анализ распределения дублей в 30 регионах (из 85) показал, что дубли встречаются в строго определенные временные периоды, хотя и не все из этих периодов актуальны для всех регионов. Меньше всего дублей — во Владимирской, Волгоградской, Вологодской, Воронежской областях и Забайкальском крае. Почему именно в этих регионах? В поисках ответа на этот вопрос мы предположили, что причина — в том, что они обслуживаются одним оператором региональных информационных систем (РИС используются гос. органами регионального уровня в дополнение к ЕИС). Но эта гипотеза не подтвердилась: операторы РИС в этих регионах оказались разные. Единственное, что их объединяет на внешний взгляд: это — последние пять субъектов в региональном каталоге ЕИС, структурированном по латинскому алфавиту.
В-третьих, дубли в основном различаются версией ЕИС: в большинстве регионов (но не во всех, что добавляет интриги юному аналитику) они имеют одну из версий 9 (9.0, 9.1, 9.2, 9.3) и версию 11.1. Вероятно, различные версии ЕИС могут быть, в первую очередь, в продолжающихся контрактах, информация по которым обновляется. Кроме того, в версии контракта, которой соответствует версия 11.1, может быть другим и содержимое некоторых тэгов: например, может измениться информация о заказчике или о статусе размещающей организации в ЕИС: с «заказчика» на «уполномоченное учреждение». (См. пример на скриншоте из Республики Татарстан — это контракт с номером 3165028337219000006.)
Важно: в обработанных данных с «Госзатрат» дублей нет, но какой вариант конкретного контракта сохранен — неизвестно. Хотя в основном попадаются имена из контрактов в версии ЕИС 11.1, нам также попадались и контракты с именем заказчика из одной из версий 9.
Когда все дубли, казалось бы, были найдены, мы обнаружили ещё одну странность.
«Мусорные» контракты.
Как любая система, ЕИС требует отладки. После неё остаётся мусор — контракты, заведенные в систему исключительно ради тестирования. Поскольку в фокусе наших интересов были контракты, заведенные в ЕИС в нерабочее время (т.е. с 19:00:01 до 07:59:59), мы не могли не обратить внимание на большое число таких контрактов в Московской области, опубликованных заказчиками со специфическими ИНН: 4444444420, 4444444422, 4444444423, 4444444424, 4444444425, 4444444426, 4444444427, 4444444428. (Не все из них были именно там или имели много контрактов, но, обнаружив в Московской области нескольких «чемпионов», мы нашли и остальных.) Ни одного из этих ИНН нет в ЕГРЮЛ. Имена заказчиков с этими ИНН в ЕИС говорили сами за себя: «Тестовая организация 22», «Тестовая организация 24», «Тестовая организация 27» и т.п. К тому же, 85% этих контрактов заводились в то же время, когда в ЕИС были объявлены регламентные работы.
«Мусорные» контракты попадают не только в ЕИС, но и на электронные торговые площадки, вероятно, сбивая с толку потенциальных поставщиков.
Скриншот с сайта электронной площадки «Росэлторг». 4 февраля 2022 г.
Попадаются они и на «Госзатратах», и, кажется, пока не ловятся алгоритмами, выявляющими аномалии на сайте. Во всяком случае, они не выделены в отдельный блок.
Вывод: Если вы — начинающий дата-сайентист и для вашего проекта на данных по госзакупкам не нужна специфическая информация вроде данных о точном времени публикации контракта или о функциональной роли заказчика в ЕИС, то имеет смысл брать уже подготовленные данные «Госзатрат» и не мучаться самостоятельно с меняющимися тэгами, учетом неизвестного количества предметов закупки и поставщиков, а также фильтрацией дублей контрактов. Если же вы из любителей хардкора (или souls-like игр) и, пользуясь этим и другими гайдами, вы к этому моменту успешно преодолели все сложности в загрузке и предобработке, то наконец-то можно начать Новую игру + и всё-таки приступить к анализу, визуализации и всем другим оригинальным задачам. Good luck, have fun!
Анастасия Карасева, Елена Веретённик (МАСТ ЕУСПб)
ссылка на оригинал статьи https://habr.com/ru/company/eusp/blog/671760/
Добавить комментарий