Преобразование данных - Data transformation

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

Преобразование данных может быть простым или сложным в зависимости от требуемых изменений данных между исходными (начальными) данными и целевыми (конечными) данными. Преобразование данных обычно выполняется вручную и автоматически. Инструменты и технологии, используемые для преобразования данных, могут сильно различаться в зависимости от формата, структуры, сложности и объема преобразовываемых данных.

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

Когда отображение данных осуществляется косвенно через модель данных- посредников , этот процесс также называется посредничеством данных .

Процесс преобразования данных

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

  • Обнаружение данных
  • Отображение данных
  • Генерация кода
  • Выполнение кода
  • Обзор данных

Эти шаги часто находятся в центре внимания разработчиков или аналитиков технических данных, которые могут использовать несколько специализированных инструментов для выполнения своих задач.

Шаги можно описать следующим образом:

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

Отображение данных - это процесс определения того, как отдельные поля отображаются, изменяются, объединяются, фильтруются, агрегируются и т. Д. Для получения окончательного желаемого результата. Разработчики или аналитики технических данных традиционно выполняют отображение данных, поскольку они работают с конкретными технологиями для определения правил преобразования (например, визуальные инструменты ETL , языки преобразования).

Генерация кода - это процесс генерации исполняемого кода (например, SQL, Python, R или других исполняемых инструкций), который преобразует данные на основе желаемых и определенных правил отображения данных. Обычно технологии преобразования данных генерируют этот код на основе определений или метаданных, определенных разработчиками.

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

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

Типы преобразования данных

Пакетное преобразование данных

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

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

Когда данные должны быть преобразованы и доставлены с малой задержкой, часто используется термин «микропакет». Это относится к небольшим пакетам данных (например, небольшое количество строк или небольшой набор объектов данных), которые могут быть обработаны очень быстро и доставлены в целевую систему при необходимости.

Преимущества пакетного преобразования данных

Традиционные процессы преобразования данных хорошо служат компаниям на протяжении десятилетий. Различные инструменты и технологии (профилирование данных, визуализация данных, очистка данных, интеграция данных и т. Д.) Достигли зрелости, и большинство (если не все) предприятия преобразуют огромные объемы данных, которые используются во внутренних и внешних приложениях, хранилищах данных и других хранилищах данных.

Ограничения традиционного преобразования данных

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

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

Этот процесс оставляет большую часть работы по определению необходимых преобразований разработчику. Разработчик интерпретирует требования бизнес-пользователей и реализует соответствующий код / ​​логику. Это может привести к ошибкам в процессе (из-за неверно истолкованных требований), а также увеличивает время, необходимое для достижения решения.

Эта проблема вызвала потребность в гибкости и самообслуживании при интеграции данных (т. Е. Расширении прав и возможностей пользователей данных и предоставлении им возможности преобразовывать сами данные в интерактивном режиме).

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

Интерактивное преобразование данных

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

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

Ряд компаний, в первую очередь стартапы, такие как Trifacta, Alteryx и Paxata, предоставляют инструменты интерактивного преобразования данных. Они стремятся эффективно анализировать, отображать и преобразовывать большие объемы данных без технических и технологических сложностей, которые существуют в настоящее время.

Решения IDT предоставляют интегрированный визуальный интерфейс, который объединяет ранее разрозненные этапы анализа данных, сопоставления данных, генерации / выполнения кода и проверки данных. Интерфейсы IDT включают визуализацию, чтобы показать пользовательские шаблоны и аномалии в данных, чтобы они могли идентифицировать ошибочные или выпадающие значения.

После завершения преобразования данных система может сгенерировать исполняемый код / ​​логику, которые могут быть выполнены или применены к последующим аналогичным наборам данных.

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

Трансформационные языки

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

  • AWK - один из старейших и популярных языков преобразования текстовых данных;
  • Perl - язык высокого уровня с процедурным и объектно-ориентированным синтаксисом, способный выполнять мощные операции с двоичными или текстовыми данными.
  • Языки шаблонов - специализированные для преобразования данных в документы (см. Также обработчик шаблонов );
  • TXL - прототипы описаний на основе языка, используемых для преобразования исходного кода или данных.
  • XSLT - стандартный язык преобразования данных XML (подходит XQuery во многих приложениях);

Кроме того, такие компании, как Trifacta и Paxata, разработали предметно-ориентированные языки преобразования (DSL) для обслуживания и преобразования наборов данных. Развитие предметно-ориентированных языков было связано с увеличением производительности и доступности для нетехнических пользователей. «Wrangle» от Trifacta является примером такого предметно-ориентированного языка.

Еще одно преимущество недавней тенденции DSL состоит в том, что DSL может абстрагироваться от лежащего в основе выполнения логики, определенной в DSL, но он также может использовать ту же логику в различных механизмах обработки, таких как Spark , MapReduce и Dataflow. В случае DSL язык преобразования не привязан к движку.

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

foo ("some string", 42, gCommon);
bar (someObj, anotherObj);

foo ("another string", 24, gCommon);
bar (myObj, myOtherObj);

оба могут быть преобразованы в более компактную форму, например:

foobar("some string", 42, someObj, anotherObj);
foobar("another string", 24, myObj, myOtherObj);

Другими словами, все экземпляры вызова функции foo с тремя аргументами, за которыми следует вызов функции с двумя аргументами, будут заменены одним вызовом функции с использованием некоторого или всего исходного набора аргументов.

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

Смотрите также

использованная литература

внешние ссылки