# Что такое ETL? **ETL** — это процесс транспортировки данных, при котором информацию из разных мест преобразуют и кладут в новое место. ETL расшифровывается как extract, transform, load, то есть «извлечь, трансформировать, загрузить». Обычно данные компании хранятся в разных местах: ● файлы на рабочих компьютерах; ● Google-таблицы; ● почта; ● облачный сервер; ● базы данных; ● копии баз данных, которые используют для отчётности; ● CRM (система взаимодействия с клиентами); ● внешние и внутренние API. У каждого источника свой способ предоставления доступа к данным: к базам данных надо подключиться напрямую, к файлам надо получить ссылки, к API — токен авторизации. Часто эти способы недоступны для быстрого использования, поэтому сравнивать данные из разных источников сложно. Чтобы с данными было удобно работать, им надо придать единую структуру, убрать лишнее и положить в хранилище данных. Для этого и нужен ETL-процесс. ![pfoto_1.PNG](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](pfoto_2.png) # Примеры ETL‑систем **Apache Airflow:** Одна из самых популярных систем для управления ETL-процессами. Запускает задачи: - по триггеру, - по расписанию, - по сенсору. Есть интерфейс работы с аудитом процессов и мониторингом решений. Позволяет запускать десятки и тысячи ETL-процессов одновременно: например, чтобы собирать статистику продаж по франшизным ресторанам из разных городов. ![pfoto_3.jpg](pfoto_3.jpg) **PySpark:** **PySpark** — фреймворк, с помощью которого строятся приложения для распределённой обработки данных. Его главная особенность в том, что Spark хранит и обрабатывает данные в оперативной памяти, а не в файловой системе. PySpark полезен для задач, когда необходимо производить быстрые вычисления над большим объёмом данных: например, обрабатывать сообщения в соцсети с аудиторией 25 миллионов пользователей.