Phone icon Связаться с нами

Данные и аналитика

Что такое 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
Три шага ETL на Python: взять данные из источника, привести к единому виду, загрузить в хранилище.

Частые вопросы

Чем ELT отличается от ETL?

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

Нужен ли ETL небольшой компании?

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

На чём пишут ETL-процессы?

Чаще всего на Python с pandas или на SQL, если преобразования происходят в базе. Для расписания и порядка шагов используют Airflow, для преобразований в хранилище — dbt. Есть и готовые сервисы без кода, например Fivetran.

Что делать, если источник изменил формат данных?

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

Обучение аналитике данных в OWU

Освойте профессию аналитика данных на практических курсах с менторами и реальными проектами.

Выбрать курс