1
0

ETL_Kirichenko.md 7.9 KB

Что такое ETL?

ETL — это процесс транспортировки данных, при котором информацию из разных мест преобразуют и кладут в новое место. ETL расшифровывается как extract, transform, load, то есть «извлечь, трансформировать, загрузить».

Обычно данные компании хранятся в разных местах:

● файлы на рабочих компьютерах;

● Google-таблицы;

● почта;

● облачный сервер;

● базы данных;

● копии баз данных, которые используют для отчётности;

● CRM (система взаимодействия с клиентами);

● внешние и внутренние API.

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

pfoto_1.PNG

Кто и где использует ETL

ETL-процессы используют аналитики и инженеры данных в IT-компаниях, которые сталкиваются с одной из двух проблем:

● Данных стало слишком много, поэтому аналитические запросы работают долго, а за хранение лишних данных приходится платить;

● Данные лежат в разных местах, поэтому аналитики не могут с ними работать.

Преимущества и недостатки ETL

В ходе преобразования в ETL-процессе часть данных может потеряться. Когда риск потерять данные слишком высок, используют ELT-процесс — он расшифровывается как extract, load, transform. Данные сначала перекладывают из нескольких мест в одно хранилище, а потом уже приводят в порядок.

ETL:

✅ В хранилище попадают структурированные данные, которые удобно анализировать;

❌ Есть риск потерять часть данных в процессе трансформации;

ELT:

✅ Данные не теряются. Из источников в хранилище попадает 100% информации;

❌ В хранилище попадают «грязные» данные, которые надо приводить в порядок;

❌ Дороже хранить большое количество необработанных данных.

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

Как работает ETL-процесс

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

1. Подключение к источнику;

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

2. Выгрузка данных из источника;

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

На этом этапе важно учитывать объём выгружаемых данных: если в системе, которая принимает данные, не хватит памяти, процессы будут работать с ошибками.

3. Первичная очистка данных;

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

4. Маппинг данных;

В компании могут использовать несколько разных источников, не связанных между собой. Чтобы данные из разных источников собрать в одной таблице, надо задать каждому свойству новое название — это и есть маппинг (от англ. mapping). Допустим, аналитик выгружает из базы идентификатор клиента, а из CRM — даты его заказов. Тогда в итоговом хранилище должны появиться колонки с названиями client_id и order_date.

pfoto_2.png

Примеры ETL‑систем

Apache Airflow:

Одна из самых популярных систем для управления ETL-процессами. Запускает задачи:

  • по триггеру,
  • по расписанию,
  • по сенсору.

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

pfoto_3.jpg

PySpark:

PySpark — фреймворк, с помощью которого строятся приложения для распределённой обработки данных. Его главная особенность в том, что Spark хранит и обрабатывает данные в оперативной памяти, а не в файловой системе. PySpark полезен для задач, когда необходимо производить быстрые вычисления над большим объёмом данных: например, обрабатывать сообщения в соцсети с аудиторией 25 миллионов пользователей.