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

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

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

Для крупных поставочных цепей мы наблюдали ситуации, когда общее количество различных полей превышает 10 000. С помощью анализа энтропии мы можем немедленно удалить половину столбцов из рассмотрения и, следовательно, значительно сократить оставшуюся работу.

Работа с таким количеством столбцов - это серьезное предприятие. Проблема не в возможностях обработки данных: с облачным вычислением и адекватным хранением данных относительно просто обрабатывать тысячи столбцов. Настоящая сложность заключается в том, чтобы понять смысл всех этих полей. По нашим оценкам, хорошо написанная документация по полю занимает около одной страницы, если в ней рассмотрены интересные случаи использования и граничные случаи. Без должной документации данных семантика данных теряется, и вероятность того, что любой сложный анализ, выполненный на основе этих данных, столкнется с серьезными проблемами с некачественными данными, очень высока. Таким образом, при наличии 10 000 полей нам приходится создавать руководство в 10 000 страниц, что требует действительно гигантских усилий.

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

Например, таблица PurchaseOrders, содержащая более миллиона строк, может иметь столбец Incoterms, который не является пустым только в 100 строках; более того, все эти строки старше пяти лет, и 90 строк содержат запись thisisatest. В этом случае поле Incoterms явно является вырожденным, и нет смысла пытаться понять эти данные. Однако наивный SQL-фильтр не сможет идентифицировать такой столбец как вырожденный.

Таким образом, требуется инструмент для идентификации вырожденных столбцов. Оказывается, что энтропия Шеннона является отличным кандидатом. Энтропия Шеннона - это математический инструмент для измерения количества информации, содержащейся в сообщении. Энтропия измеряется в шеннонах, которые являются единицей измерения, нечто похожее на биты информации. Рассматривая значения, найденные в самом столбце, как сообщение, энтропия Шеннона дает нам меру информации, содержащейся в столбце, выраженную в шеннонах.

Хотя все это может звучать очень теоретически, применение этого понимания на практике крайне просто. Для этого достаточно использовать агрегатор entropy(), предоставленный Envision. Нижеприведенный небольшой скрипт иллюстрирует, как мы можем использовать Envision для проведения анализа энтропии таблицы с 3 полями.

read "data.csv" as T[*]
show table "Список энтропий" with
  entropy(T.Field1)
  entropy(T.Field2)
  entropy(T.Field3)

Любое поле, связанное с энтропией ниже 0,1, является очень хорошим индикатором вырожденного столбца. Если энтропия ниже 0,01, столбец гарантированно является вырожденным.

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

Мы непреднамеренно обнаружили положительный побочный эффект фильтрации энтропии: она снижает усталость IT, связанную с (по)открытием IT-систем. Действительно, исследование вырожденного поля обычно оказывается истощающей задачей. Поскольку поле не используется - иногда уже не используется - никто не уверен, является ли поле действительно вырожденным или играет ли поле критическую, но неясную роль в процессах снабжения. Из-за сложностей снабжения часто нет никого, кто мог бы однозначно утверждать, что данное поле не используется. Фильтрация энтропии немедленно устраняет наихудших нарушителей, которые гарантированно приведут нас в тупик.