Подготовка данных для импорта - GolosMovement/StatElectGenerator GitHub Wiki

В текущей версии (итерация 1) импорт исходных данных производится с помощью файла Excel.

Файл получается из независимых источников (ЦИКи, исследователи, и прочее) Для импорта контент-менеджер должен файл подготовить, придерживаясь правил и соглашений.

Описание элементов иерархии избирательных комиссий

В базе данных предусмотрена возможность описать комиссию любого уровня четырьмя способами одновременно: числом (номер комиссии, код региона), текстом на русском, текстом на английском языках, и текстом на языке оригинала. В общем случае, не все описания существуют или используются ( подробнее об описаниях ).

Однако при импорте система опирается на одно из текстовых описаний для построения иерархии. Контент-менеджеру важно правильно подготовить это опорное текстовое описание.

В итерации 1 система строит иерархию комиссий только по текстовым описаниям. Если есть только численное (номер участка, код региона), то задача контент менеджера:

☑️ создать искусственное строковое описание в файле импорта для этой иерархии. (например формулой в Excel ="УИК №"&" "&A23) (для описания на русском) или ="PEC#"&" "&A23 (для описания на английском). Текст в A23 должен быть дополнен слева нулями с помощью функционала Excel (для правильной сортировки)

Причины решения:

  • Дополнительное описание не занимает много места (напр. в базе Дума РФ 2011, общая длина описаний 98000 иерархий - 832546, что занимает порядка 1.63 МБ или 1-2% общего размера данных)
  • При выводе текстовые описания более информативны. Ср. "Мазовецкое - 00232 - 92323" vs. "Мазовецкое - Код региона: 00232 - УИК № 92323".

Описаний у элемента иерархии может быть несколько. Возникает вопрос: какое из описаний использовать для построения иерархии?

Приоритет для построения иерархии задается:

  1. Текстовое описание на языке оригинала
  2. Текстовое описание на русском языке
  3. Текстовое описание на английском языке

Правило: если контент-менеджер указал при импорте, т.е. настраивая маппинг, наличие описания на языке оригинала для одной из иерархий, для этой иерархии будет использоваться оно. Если его нет - описания на русском языке, если нет первых двух - на английском. Текстовое описание хотя бы на одном языке - обязательно должно быть в файле импорта.

Алгоритм системы при обработке файла импорта:
Если указано при импорте для иерархии N текстовое описание на языке оригинала, строим по нему, иначе...
Если указано при импорте для иерархии N текстовое описание на русском языке, строим по нему, иначе...
строим по текстовому описанию на английском языке.

Причины решения:

  • Надежность импортируемых данных. В исходных данных описания всегда на языке оригинала. Т.е. данные описываемые в файле импорта как номер комиссии и , описание на языке оригинала - наименее подвержены риску быть испорченными ошибкой при обработке.

В правильно подготовленном файле, если присутствуют колонки с текстом описывающим какую-либо иерархию на русском, английском языках или языке оригинала, то они идентичны по смыслу и отличаются только языком. Иерархия должна строиться корректно на любом из них. Но есть некоторая вероятность ошибки при обработке исходных данных.

  • Эффективность контроля. Вероятность, что контент-менеджер будет русскоязычным, выше. Следовательно, меньше шансов ему допустить ошибку в данных, описываемых на русском языке.

Задача и ответственность контент-менеджера:

☑️ Убедиться, что текстовые описания для приоритетного языка является полным, и все пропуски - значащие.

Значащие пропуски в иерархии бывают, если она неравномерная. Например, на выборах в Думу РФ 2011 года в некоторых регионах был элемент иерархии "территориальные списки", в других - не был. Таким образом, в таблице импорта для Думы 2011 года в колонке, описывающей "территориальные списки" в некоторых строках были пропуски. Исходя из такой структуры и строилась иерархия. Если в описании иерархий на других языках, кроме приоритетного, есть пропуски, они значащими не являются, и соответствующие поля просто не будут заполнены. При выводе элементов иерархии с такими пропусками будет браться первое доступное описание в порядке: рабочий язык, заданный пользователем, язык оригинала, другой рабочий язык.

Обсуждение этих правил

Задача и ответственность контент-менеджера:

☑️ При возможности переводить на английский текстовые описания иерархии комиссий. Например, вернюю иерархию, регионы, можно перевести с помощью google.translate и Excel.

В большинстве случаев, существуют официальные источники, где можно проверить загружаемые файлы по суммируемым итоговым значениям. Например, для Выборов Президента Франции 2017 года есть данные Конституционного Совета (I тур, II тур), для выборов Президента Польши 2015 года есть данные Избирательной Комиссии Польши (I тур, II тур ). ЦИК России публикует официальные итоговые значения по всем выборам на своем сайте

Задачи контент-менеджера

☑️ Перед импортом убедиться с помощью функционала Excel, что итоговые значения импортируемого массива данных совпадают с официальными итоговыми значениями.

☑️ После импорта убедиться с помощью функционала Системы, что итоговые значения импортированного набора протоколов (выборы) совпадают с официальными итоговыми значениями. (запланировано на Iteration 4)

Особый случай представляют из себя участки, на которых выборы прошли, но их результаты были отменены. В традициях Российского ЦИК публиковать такие участки наравне с остальными, но указывать у них все значения как пустые строки. Также пустые значения могут появляться в результате ошибок парсинга. Такие ошибки невозможно выявить проверкой итоговых значений. Одним из зафиксированных случаев такого поведения базы было дублирование комиссий при парсинге, при чём дубль содержал пустые значения. Итоговые значения сходились. Такую ошибку Система проверяет самостоятельно (запланировано на Iteration 4) Также пустые значения могут появляться в результате ошибок исходного сайта. Такое было на сайте ЦИК Украины (Президентские выборы 2014 года).

Задача контент-менеджера

☑️ Перед импортом, убедиться с помощью функционала Excel в том, что пустые значения объяснимы (например все данные по голосованию пустые в случае ЦИК РФ). =СУММПРОИЗВ(--ЕПУСТО(диапазон))

☑️ После импорта, проверить импортированные данные на уникальность иерархии комиссий.

Смешанные значения в колонках

В некоторых странах описание элемента иерархии может быть как числовым, как и буквенным (Франция, Украина).

Задача контент-менеджера

☑️ Перед импортом, найти с помощью функционала Excel текстовые ячейки. Создать колонку с единым типом (текст).

⚠️ **GitHub.com Fallback** ⚠️