Анализ энтропии для обнаружения ИТ-систем цепей поставок
ИТ-ландшафт цепей поставок почти всегда сложен. Действительно, по своей природе цепи поставок включают в себя множество участников, множество объектов, множество систем и т.д. В результате, создание аналитики, основанной на данных, для цепей поставок является вызовом из-за огромного разнообразия ИТ-ландшафта. Слишком часто аналитика цепей поставок дает бессмысленные результаты именно из-за проблемы «мусор на входе – мусор на выходе».
В компании 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 "List of entropies" with
entropy(T.Field1)
entropy(T.Field2)
entropy(T.Field3)
Любое поле с энтропией ниже 0.1 является очень хорошим индикатором вырожденной колонки. Если энтропия ниже 0.01, колонка гарантированно является вырожденной.
Наш опыт показывает, что первоначальная фильтрация на основе измерений энтропии надежно исключает от одной трети до двух третей исходных полей из области интереса. Экономия времени и усилий оказывается весьма значительной: для крупных проектов в области цепей поставок это означает сохранение человеко-лет благодаря такому анализу.
Мы непреднамеренно обнаружили положительный побочный эффект фильтрации по энтропии: она снижает ИТ-усталость, связанную с (пере)открытием ИТ-систем. Действительно, исследование вырожденного поля зачастую оказывается изнурительной задачей. Так как поле не используется — а иногда уже не используется — никто не может с уверенностью утверждать, что поле действительно вырожденное или же оно играет критическую, но неопределенную роль в процессах цепей поставок. Из-за сложности цепей поставок часто никто не может подтвердить, что данное поле не используется. Фильтрация по энтропии немедленно устраняет самых проблемных кандидатов, которые гарантированно приведут нас к безрезультатным поискам.