Что такое ETL

Что такое ETL

Почему загрузка, трансформация и выгрузка данных — это один процесс.

ETL (Extract, Transform, Load) — организация и настройка передачи информации между источниками, которые отдают и принимают данные. Вместе с Антоном Бондарем, Big Data Consultant и лектором курса Data Engineering, разбираемся, как устроен ETL-процесс.

Основные этапы

ETL можно разделить на три этапа работы с данными. Первый — Extract, загрузка данных из нескольких источников, часто — по расписанию. Этот этап зависит от требований бизнес-логики и объемов информации. Вам нужно учитывать скорость загрузки данных, их количество и частоту обновления. Возможны длительные простои, которые сменяются поступлением больших объемов информации в короткие сроки. В таких случаях вы можете загружать только те данные, которые соответствуют бизнес-логике. Например, вам нужна информация о покупках дороже $100. Пользователи с меньшим чеком — не ваша ЦА.

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

Взаимодействие с данными не должно замедлять работу источников и приложения. Когда вам нужно загрузить данные, вы можете проверить поступление новой информации за определенный период. Таблицы могут содержать информацию о создании и обновлении полей, а значит, загружать нужно только данные, которые менялись.

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

Затем измененные данные нужно интегрировать в хранилище так, чтобы не испортить имеющиеся, то есть привести все к одному формату. Сырые данные могут проходить несколько этапов до того, как перейдут к загрузке (Load). Вы можете загрузить в хранилище все обработанные данные или перезаписать измененные. Неполные данные и те, которые содержат ошибки, можно отсеять. Чтобы понять причину ошибок, данные нужно обработать еще раз.

Антон: «В современных архитектурах (Data Lake и Lakehouse) интеграция с другими системами упрощена. За последние пару лет Transform вобрал большинство задач из Extract и стал более сложным. Теперь менеджменту Transform стоит уделять больше внимания».

Что ETL дает бизнесу

Задача ETL-процессов — быстро получить, обработать, объединить и передать данные в хранилище. Есть инструменты, которые помогают разобраться, как и на каком этапе данные преобразовались.

Антон: «Я советую Apache Airflow, потому что он:

  • ничего не упрощает. Описание процессов, мониторинг, нотификации, управление паролями — это просто код на Python.
  • ничего не делает и не добавляет к логике за вас. Другие инструменты не всегда так работают. Например, Microsoft SSIS сам валидирует данные перед загрузкой в таблицу. Это полезно, но этот процесс может занять много времени.
  • подталкивает к хорошей инженерной практике — переиспользованию существующего функционала. Когда инженеры пишут пайплайн, они пишут его не под одну задачу, а под весь класс задач. Выгрузить таблицу из БД, забрать данные из API, вытянуть файл из Amazon S3 — это однотипные задачи, которые не нужно переделывать каждый раз. Они отлично обобщаются в Airflow при помощи Python.

Apache Airflow — конструктор с хорошей основой. Если что-то не подходит, вы всегда можете это изменить».

У ETL-инструментов есть системы для мониторинга и логирования событий — так бизнесу проще сравнивать изменения и анализировать исходные данные, находить ошибки и понимать, когда они возникли.

Антон: «ETL нужен для организации потоков данных в компании, а также для достижения единообразности и полноценного мониторинга data pipelines. ETL-системы удешевляют интеграцию с новыми источниками и сокращают время на поддержку существующих. Это повышает качество данных».

Что влияет на ETL

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

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

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

Антон: «Несмотря на высокий спрос на real-time аналитику, на рынке пока нет идеальных ETL-инструментов. В дальнейшем они будут развиваться в направлении обработки потоковых данных».

Ещё статьи
Как системы работают с высокими нагрузками.
Зачем нужны библиотеки для векторизации.