Маппинг что это такое
Чернобровов Алексей Аналитик
Big Data Mapping: что такое маппирование больших данных
В этой статье рассмотрено, что такое маппирование больших данных, как это связано с Data Science, когда и как часто выполняется этот процесс, а также, какие программные инструменты позволяют автоматизировать Big Data mapping.
Что такое маппирование данных и где это используется
Представим, что в одной из корпоративных систем сведения о семейном положении сотрудника хранятся так, что «1» в поле «дети» означает их наличие. В другой системе эти же данные записаны с помощью значения «True», а в третьей – словом «да». Таким образом, разные системы для обозначения одних и тех же данных используют разные отображения. Чтобы привести информацию к единообразию, следует сопоставить обозначения одной системы обозначениям в других источниках, т.е. выполнить процедуру мэппинга данных (от английского map – сопоставление). В широком смысле маппирование – это определение соответствия данных между разными семантиками или представлениями одного объекта в разных источниках. На практике этот термин чаще всего используется для перевода или перекодировки значений [1].
Дисциплина управления данными, Data Management, трактует маппинг как процесс создания отображений элементов данных между двумя различными моделями, который выполняется в начале следующих интеграционных задач [2]:
Таким образом, маппирование данных представляет собой процесс генерации инструкций по объединению информации из нескольких наборов данных в единую схему, например, конфигурацию таблицы. Поскольку схемы данных в разных источниках обычно отличаются друг от друга, информацию из них следует сопоставить, выявив пересечение, дублирование и противоречия [3].
С прикладной точки зрения можно следующие приложения маппинга данных [4]:
В Big Data мэппинг выполняется при загрузке информации в озеро данных (Data Lake) и корпоративное хранилище (DWH, Data Warehouse). Чем Data Lake отличается от DWH, рассмотрено здесь. В этом случае маппинг реализуется в рамках ETL-процесса (Extract, Transform, Load) на этапе преобразования. При этом настраивается соответствие исходных данных с целевой моделью (рис. 1). В случае реляционных СУБД для идентификации одной сущности в разных представлениях нужно с ключами таблиц и настройкой отношений (1:1, *:1, 1:* или *:*) [5].
Рис.1. Маппирование данных при консолидации таблиц
В Data Science маппирование данных входит в этап их подготовки к ML-моделированию, когда выполняется формирование датасета в виде матрицы значений для обработки соответствующими алгоритмами. В частности, когда Data Scientist обогащает исходный датасет данными из сторонних источников, он занимается маппингом данных. Проводить процедуру дата мэппинга можно вручную или автоматически с помощью соответствующих подходов и инструментов, которые рассмотрены далее.
Особенности процесса дата мэппинга
На практике трудоемкость мэппинга зависит от следующих факторов [3]:
Облегчить процесс маппирования можно за счет метаданных – сведениях о признаках и свойствах объектов, которые позволяют автоматически искать и управлять ими в больших информационных потоках. В частности, если каждое приложение будет выполнять публикацию метаданных, что позволит создать их стандартизированный реестр, то маппинг будет полностью автоматизированным [2]. Однако в большинстве случаев процесс мапирования данных не полностью автоматизирован и состоит из следующих этапов [4]:
При работе с большими объемами данных выделяют 3 основных подхода к маппированию [2]:
Также стоит упомянуть полуавтоматическое маппирование в виде конвертирования схем данных, когда специализированная программа сравнивает источники данных и целевую схему для консолидации. Затем разработчик проверяет схему маппирования и вносит исправления, где это необходимо. Далее программа конвертирования схем данных автоматически генерирует код на C++, C # или Java для загрузки данных в систему приемник (рис. 3) [3].
Рис. 3. Конвертирование схем данных в процессе мэппинга
Далее рассмотрим, какие инструментальные средства реализуют вышеперечисленные подходы.
Инструменты маппирования больших данных
Как и большинство прикладных решений, все средства для маппинга данных можно разделить на 3 категории [6]:
Большинство перечисленных продуктов поддерживают все 3 подхода к маппированию: ручной (GUI и кодирование), data-driven и семантический. Однако, семантический мэппинг требует наличия реестров метаданных, что имеется далеко не в каждом предприятии. А публичные реестры метаданных, такие как национальные, отраслевые или городские репозитории [7] не всегда напрямую коррелируют, например, с задачами построения локального DWH. Но, наряду с открытыми государственными данными и другими публичными датасетами, их можно использовать в исследовательских DS-задачах.
При выборе конкретного инструмента для маппинга больших данных стоит учитывать следующие факторы:
Резюме
Итак, маппирование данных – это важная часть процесса работы с данными, в том числе и для Data Scientist’а. Эта процедура выполняется в рамках подготовки к ML-моделированию, в частности, при обогащении датасетов. В случае одноразового формирования датасета из нескольких разных источников сопоставление данных можно выполнить вручную или с помощью самописного Python-скрипта. Однако, такой подход не применим в промышленной интеграции нескольких информационных систем или построении корпоративных хранилищ и озер данных. Поэтому знание инструментов дата мэппинга пригодится как Data Scientist’у, так и Data Engineer’у. Наконец, сопоставление данных с целью избавления от дублирующихся и противоречивых значений входит в задачи обеспечения качества данных (Data Quality) [4]. В свою очередь, Data Quality относится к области ответственности стратега по данным и инженера по качеству данных. Таким образом, понимание процесса маппирования необходимо каждому Data-специалисту.
Словарный запас: мэппинг
Десятки слов ежегодно приходят в русский язык, поселяются в нём и режут нам слух. Англицизмы используются не к месту и невпопад, термины теряют своё первоначальное значение и переселяются в новые области, а давно знакомые слова вдруг появляются в незнакомом контексте — запутаться проще простого. Strelka Mag разобрался, что такое мэппинг, чем он отличается от картографии и для чего его используют архитекторы, урбанисты и даже художники.
Откуда пришло
Что написано в словаре
«Мэппинг — графическое представление процедуры, процесса, структуры или системы, которое отражает расположение или отношения компонентов, а также документирует потоки, например денежные, энергетические, товарные, информационные, миграционные». (businessdictionary.com)
«Видеомэппинг — также используется значение 3D-мэппинг — направление в аудиовизуальном искусстве, представляющее собой 3D-проекцию на физический объект окружающей среды с учётом его геометрии и местоположения в пространстве». (projection-mapping.org)
В значении «визуализация» — «метод представления информации в виде оптического изображения (например, в виде рисунков и фотографий, графиков, диаграмм, структурных схем, таблиц, карт и т. д.). Очень эффективно используется для представления изначально не зрительной информации (например, температуры, плотности населения, распределения уровней электромагнитных полей и т. д.)» (Словарь бизнес-терминов. «Академик.ру». 2001)
«Майндмэппинг — графическая техника, в основе которой лежит использование природной склонности мозга мыслить ассоциативно, от центра к периферии». (mind-mapping.co.uk)
Что говорят эксперты
Куба Снопек, преподаватель института «Стрелка», — о мэппинге как инструменте изучения города
«Я не называю мэппинг картографией потому, что картография — это признанная научная дисциплина, и она подразумевает очень чёткий метод. Если кратко: человек идёт в новое место и наносит всё, что видит.
Мэппинг, который мы используем как инструмент изучения города на „Стрелке“, отличается и подразумевает отражение процессов, происходящих в городе. Мы создаём карту поверх существующей и проверяем, что изменилось с момента создания геодезической основы. И у каждого исследователя может получиться своя карта одного и того же пространства. Это самая интересная часть: один может смотреть только на архитектуру, другой — на поведение людей, третий — на поведение животных или на световую гамму.
У меня любой проект начинается с карты. Без этого невозможно двигаться дальше. Сейчас я делаю проект, связанный с польскими церквями. Там карта из четырёх тысяч объектов, и анализ этой карты — самая главная часть проекта, она основной его документ».
Алексей Розов, сооснователь компании «Сила света», — о 3D-мэппинге
«Смысл 3D-мэппинга заключается в том, что мы создаём картинку, которая накладывается на физический объект в соответствии с его формами и архитектурой. Именно это даёт возможность видоизменять здание с помощью 3D-трансформации или изменения текстур.
Сначала инженеры делают 3D-модель здания. Если конструкция не очень сложная, то модель можно сделать, съездив на территорию и сняв размеры. Если это, например, Большой театр, в таком случае делается лазерное сканирование, и модель создают по получившемуся в результате облаку точек.
Наземное лазерное 3D сканирование фасадов / фото: severnpartnership.com
Затем аниматоры-художники в программах 3D-моделирования создают контент. Пока они рисуют, инженеры делают расчёты того, сколько нужно проекторов и какой мощности, чтобы покрыть поверхность здания. Например, на Большой театр нужно 12 проекторов, на Манеж — восемь, на МГУ — 86. Также делаются расчёты по яркости и разрешению картинки. Затем виртуальный set-up — настройка всех проекторов, чтобы они составляли единую картину. Когда контент готов, все выезжают непосредственно на площадку. На месте собирается башня для проекторов, устанавливаются необходимые сервера, и инженеры начинают сводить изображение, чтобы оно ровно попадало на здание. Включается компьютер с загруженным контентом, и шоу начинается. Ошибок быть не должно. Если только совсем мелкие, незаметные обычному зрителю. Я видел неудачные примеры того, когда люди хотели сделать 3D-мэппинг, но у них получилась некрасивая графика, не очень точно проекция попадала на объект, неправильно рассчитан свет, исходящий из проектора, — и получается, что всё выглядит тускло, изображение пиксельное, и это не украшает, а, наоборот, только портит.
Время, потраченное на один проект, зависит от масштаба здания и протяжённости ролика. Если вы, например, делаете шоу для МГУ на полчаса, то вам, по-хорошему, нужен год на его создание, а если для Большого театра продолжительностью три минуты, вам достаточно месяца-двух.
Трудно сказать, насколько это развито в России по сравнению с другими странами, но, например, в Москве проходит мощный ежегодный фестиваль „Круг света“. Сегодня появилась тенденция использовать 3D-мэппинг как интерьерный дизайн: на постоянной основе в музее или торговом центре несколько раз в день включают шоу для гостей».
Примеры употребления
«Мэппинг раскрывает экономическую, культурную и политическую ценность информации, которую даёт пространство. Метод позволяет объединить всю эту информацию и привязать её к конкретному месту». (Strelka Magazine)
«К 125-летию чешская Академия наук подготовила визуальное шоу — видеомэппинг на своём историческом здании в Праге». (420on.cz)
«На русский язык майндмэппинг переводится как „карта мышления“, „карта ума“, „карта памяти“, „ментальные карты“. Метод визуализации можно применять для создания новых идей, анализа и упорядочивания информации, конспектирования, принятия решений и много другого». («Наука и жизнь»)
Маппинг
Маппинг (от англ. map — в переводе на русский — карта) — это оригинальный жанр видео на YouTube. Отличается от остальных (а именно видеоблогов и летсплеев) тем, что все события (альтернативные или исторические) происходят на карте. Люди, работающие с данным жанром называются мапперами.
Содержание
Разновидности маппинга в плане сюжета
Исторический маппинг
Один из двух основных разновидностей маппинга. В данном жанре по сюжету показывается некое историческое событие на определённой территории. Например, войны или истории различных государств.
Альтернативный маппинг
Второй основной тип маппинга и самый распространённый. В данном жанре по сюжету показывается не историческое событие, а альтернативный вариант развития событий в будущем.
Альтернативный исторический маппинг
Сочетание двух предыдущих вариантов. Тот же альтернативный жанр, но точкой начала альтернативной линии времени является не настоящее время, а определённая историческая дата.
Информативный маппинг
Значительно отличается от других. Тут основной частью сюжета является не показание какого-либо события на определённой истории, а дача информации, независимой от продвижения во времени. Например видео, где показаны кадры с составом различных союзов на карте мира является информативным маппингом. То, в каком порядке республики покидали СССР можно отнести как к информативнму, так и к историческому маппингу.
Битва Мапперов
Жанр, развлекательный для самих мапперов, но непонятный простому зрителю. Здесь мапперов размещают на территориях государств, вымышленных или реальных, и делают с ними всяческие события. Битва мапперов может быть любой из предыдущих четырёх жанров.
Вымышленный маппинг
В этом жанре можно придумывать всё! Потому что автор этого типа маппинга создаёт свой мир, и сам развивает сюжет, сам создаёт государства, сам создаёт материки. Сейчас является разновидностью «Битв мапперов», причём большинством авторов называется так же. Придуманного Маппинга.
Разновидности маппинга в плане визуализации
КБ-маппинг
В этом типе маппинга на территории государства размещается так называемый «болл» из жанра комиксов CountryBalls/PolandBall, причём каноны немного отличаются.
Классический маппинг
В этом типе маппинга кантриболы не размещаются, государства либо подписаны, либо остаются без опознавательных атрибутов.
Мэппинг в бюджетировании. Что это, и зачем он нужен?
Если в процессе подготовки данных для бюджетирования задействовано более одного человека, то встает вопрос о том, как сделать так, чтобы при обработке первичных данных соблюдалась последовательность и единообразие, чтобы один набор параметров всегда был сопоставлен одной статье бюджета, а не так, как по какой-то причине захотелось сегодня пользователю. Здесь на помощь приходит мэппинг
Мэппинг – это сопоставление, определение связей и соответствия между различными объектами системы. Говоря по-русски, это картирование, когда вы составляете «карту системы», описываете маршрут процесса получения данных. Разберем сегодня, как этот инструмент пригодится в бюджетировании.
Система бюджетирования представляет собой один из контуров учета, представление и компоновка данных в котором может отличаться от их представления в оперативном и регламентированном контурах. В то же время система бюджетирования строится на том же наборе исходных данных, что и регламентированный и оперативный учет.
Информационная потребность руководства в управленческой информации может быть существенно шире, чем, например, данные, предоставляемые в рамках бухгалтерской и налоговой отчетности. Структура бюджетов, состав и группировка статей бюджетирования может отличаться от, например, отчета о финансовых результатах или оборотно-сальдовой ведомости в регламентированном учете. Статьи бюджетов – это отдельный от статей расходов, доходов, денежных средств и иных справочник.
Состав статей бюджетов может быть огромным, в то время как бухгалтерии, например, для учета доходов и расходов достаточно тех статей, что представлены в отчете о финансовых результатах, или тех статей движения денежных средств, что представлены в отчете о движении денежных средств.
Для сохранения целостности данных, контроля, получения информации в требуемом виде используется механизм сопоставления или мэппинга данных оперативного учета данным бюджетирования.
Суть мэппинга:
Для каждой статьи бюджета нужно указать, на основе каких данных оперативного учета при каких условиях формируется значение по ней, при каких условиях происходит отражение фактических данных в бюджете, либо в каком случае срабатывает заложенный в бюджете лимит.
Соотношение между справочниками может быть различным. Одна статья бюджета может складываться из нескольких статей расходов, например. Или данные одной статьи расхода в бюджете могут быть разложены на несколько статей бюджетов.
Возможны ситуации, когда всё будет один к одному: одна статья бюджета равна одной статье первичного учета, например, расхода. Это нормально. Многие так работают. Просто очень часто это неэффективно.
Важно:
Мэппинг должен обеспечивать целостность данных, т.е. учет всех возможных вариантов комбинаций, сумма которых в бюджетировании будет равна сумме данных в оперативном и регламентированном учете с поправкой на заранее известные не учитываемые в каком-то из видов учета данные.
Если ваше множество данных по какой-то статьей включает А, Б и ещё что-то, то условия должны включить их все:
— например, вы для одной статьи выбираете «А», для второй статьи выбираете «Не А»;
— либо вы можете выбрать для одной статьи «А», для второй «Б», для третьей «Не А и Не Б».
Т.е. должна быть учтена вся совокупность данных.
Если вы выберете только А и Б, то получите дыру в части данных из области «ещё что-то…».
Пока попробуйте понять написанное, а в следующей статье разберем пример, чтобы было понятнее, что это за зверь такой.
Практичные способы маппинга данных в Kotlin
Маппинг данных – один из способов для разделения кода приложения на слои. Маппинг широко используется в Android приложениях. Популярный пример архитектуры мобильного приложения Android-CleanArchitecture использует маппинг как в оригинальной версии (пример маппера из CleanArchitecture), так и в новой Kotlin версии (пример маппера).
Маппинг позволяет развязать слои приложения (например, отвязаться от API), упростить и сделать код более наглядным.
Пример полезного маппинга изображен на схеме:
Для примера модели упрощены. Person содержит Salary в обоих слоях приложения.
В настоящем коде, если у вас одинаковые модели, возможно, стоит пересмотреть слои приложения и не использовать маппинг.
Метод №1: Методы-мапперы
Самый быстрый и простой метод. Именно он используется в CleanArchitecture Kotlin (пример маппинга).
Такой код быстрее писать и проще модифицировать – объявления полей и их использование находятся в одном месте. Не надо бегать по проекту и модифицировать разные файлы при изменении полей класса.
Еще проблема может возникнуть если по требованиям архитектуры слои приложения не могут знать друг о друге: т.е. в классе Src слоя нельзя работать со слоем Dst и наоборот. В этом случае такой вариант маппинга использовать не получится.
В рассмотренном примере слой Src зависим от слоя Dst и может создавать классы этого слоя. Для обратной ситуации (когда Dst зависим от Src ) подойдет вариант со статическими методами-фабриками:
Маппинг находится внутри классов Dst слоя, значит эти классы не раскрывают все свои свойства и структуру использующему их коду.
Если в приложении один слой зависим от другого и осуществляется передача данных между слоями приложения в обоих направлениях, статические методы-фабрики логично использовать вместе с методами-мапперами.
Резюме метода маппинга:
+ Быстро писать код, маппинг всегда под рукой
+ Легкая модификация
+ Низкая связность кода
— Затруднено Unit-тестирование (нужны моки)
— Не всегда позволено архитектурой
Метод №2: функции-мапперы
Размещение маппера и классов, с которыми он работает, в разных местах проекта не всегда удобно. При частой модификации класса придётся искать и изменять разные файлы в разных местах.
Резюме метода маппинга:
+ Простое Unit-тестирование
— Затруднена модификация
— Требуются открытые поля у классов с данными
Метод № 3: Функции-расширения
При этом стоит учесть, что функции расширения могут приводить к неожиданному поведению из-за своей статической природы: https://kotlinlang.org/docs/reference/extensions.html#extensions-are-resolved-statically
Резюме метода маппинга:
+ Простое Unit-тестирование
— Затруднена модификация
— Требуются открытые поля у классов с данными
Метод №4: Классы-мапперы с интерфейсом
Относительно маппинга в функции у этого примера только один недостаток – необходимость писать немного больше кода.
Резюме метода маппинга:
+ Лучше типизация
— Больше кода
Как и функции-мапперы:
+ Простое Unit-тестирование
— Затруднена модификация
— требует открытые поля у классов с данными
Метод 5: Рефлексия
Метод черной магии. Рассмотрим этот метод на других моделях.
В данном примере EmployeeSrc и EmployeeDst хранят имя в разных форматах. Мапперу нужно только составить имя для новой модели. Остальные поля обработаются автоматически, без написания кода (вариант else в when ).
Метод может быть полезен, например, если у вас большие модели с кучей полей и поля в основном совпадают у одних и тех же моделей из разных слоев.
Большая проблема возникнет, например, если вы добавите обязательные поля в Dst и его случайно не окажется в Src или в маппере: cлучится IllegalArgumentException в runtime. Также рефлексия имеет проблемы с производительностью.
Резюме метода маппинга:
+ меньше кода
+ простое Unit-тестирование
— опасен
— может негативно сказаться на производительности
Выводы
Такие выводы можно сделать из нашего рассмотрения:
Методы-мапперы — наглядный код, быстрее писать и поддерживать
Функции-мапперы и функции расширения – просто тестировать маппинг.
Классы мапперы с интерфейсом — просто тестировать маппинг и яснее код.
Рефлексия – подходит для нестандартных ситуаций.