Данные и аналитика
Что такое ETL?
ETL (Extract, Transform, Load — извлечь, преобразовать, загрузить) — это процесс переноса данных из источников в хранилище. Сначала данные берут из систем, потом приводят к единому виду и очищают, а уже затем загружают туда, где с ними будут работать аналитики.
ETL нужен каждый раз, когда данные хранятся в разных местах. В CRM клиент записан в одном поле, в бухгалтерии — в другом, рекламный кабинет передаёт даты в своём формате. Без этапа преобразования свести это в один отчёт невозможно.
Вариант ELT меняет порядок шагов: данные сначала загружают в хранилище как есть, а преобразуют уже внутри него средствами самой базы. Так делают в облачных хранилищах, где хватает вычислительных мощностей, а гибкость важнее.
Где применяется
ETL-процессы запускают по расписанию, чаще всего ночью, чтобы утром отчёты показывали свежие данные. Информацию берут из CRM, учётной системы, рекламных кабинетов и логов сайта, сводят к общим справочникам и складывают в хранилище, из которого её читают BI-инструменты.
Этим занимается инженер данных, а в небольших командах — аналитик. Процессы пишут на Python или SQL, а управляют ими через Airflow, dbt или встроенные инструменты облака. Большая часть работы — не перенос, а обработка сбоев: что делать, если источник не ответил или изменил формат данных.
Пример
Отчёт по рекламе собирает данные из трёх кабинетов. В одном дата приходит текстом, в другом сумма в долларах, в третьем название кампании с лишними пробелами. Этап преобразования приводит всё к одному виду, и только после этого цифры можно складывать.
raw = pd.read_csv('exports/orders.csv') # Extract
clean = (raw
.rename(columns={'order_date': 'created_at'}) # Transform
.assign(created_at=lambda d: pd.to_datetime(d.created_at))
.query("status == 'paid'")
.drop_duplicates(subset='order_id'))
clean.to_sql('fact_orders', warehouse, if_exists='append') # Load
Частые вопросы
Чем ELT отличается от ETL?
Порядком шагов. В ETL данные преобразуют по дороге и загружают в хранилище уже готовыми. В ELT их сначала загружают как есть, а преобразуют внутри хранилища его же ресурсами. Облачные платформы сделали второй подход дешёвым, поэтому он встречается всё чаще.
Нужен ли ETL небольшой компании?
Полноценный процесс с системой управления — вряд ли. Но если отчёт каждую неделю вручную собирают из двух и более источников, эту работу стоит автоматизировать. Даже простой скрипт по расписанию экономит часы и убирает ошибки ручного копирования.
На чём пишут ETL-процессы?
Чаще всего на Python с pandas или на SQL, если преобразования происходят в базе. Для расписания и порядка шагов используют Airflow, для преобразований в хранилище — dbt. Есть и готовые сервисы без кода, например Fivetran.
Что делать, если источник изменил формат данных?
Именно для этого в ETL добавляют проверки: количество строк, типы данных, обязательные поля, уведомления об отклонениях. Лучше остановить процесс с понятной ошибкой, чем незаметно загрузить испорченные данные — иначе отчёт покажет неправильные цифры.
Обучение аналитике данных в OWU
Освойте профессию аналитика данных на практических курсах с менторами и реальными проектами.
Выбрать курс