Learning Platform
Глоссарий Troubleshooting
Урок 10.01 · 20 мин
Начальный
ETLInformaticaTalendSSISdata integration

В предыдущих модулях ты разобрался с тем, что такое DWH и как моделируется звезда. Теперь главный вопрос инженерии данных: как данные туда попадают. Большинство пайплайнов мира строится по одному из двух шаблонов — ETL или ELT. Разница на первый взгляд только в порядке букв, но она определяет, где живёт логика трансформации, какие инструменты ты выбираешь и какие проблемы получаешь в нагрузку.

Этот урок про ETL — старший брат. Он появился раньше и до сих пор работает в десятках тысяч компаний.

Что значит каждая буква

ETL расшифровывается как Extract, Transform, Load — извлечь, преобразовать, загрузить. Это три фазы пайплайна, выполняющиеся строго в этом порядке:

Фазы ETL

Данные сначала вытаскивают из источника, потом преобразуют на отдельной машине, и только готовый результат попадает в хранилище.

ИсточникOLTP / API / CSVЛюбая исходная система: продакшен PostgreSQL, биллинг Oracle, выгрузка из CRM, поток событий из веб-сервера.
Extract
ETL-серверTransformОтдельная машина или кластер, где живёт движок трансформаций. Здесь происходит чистка, агрегация, типизация, join'ы между источниками — до того, как данные попадут в DWH.
Load
DWHготовые таблицыВ хранилище приезжают уже подготовленные данные: типы приведены, бизнес-правила применены, дубли убраны. Сырых данных тут обычно нет.

Подробнее по шагам:

  • Extract — выгрузка данных из источника. Источник может быть чем угодно: OLTP-база, REST API, CSV-файл, очередь сообщений, FTP-сервер. Задача — забрать данные, не нагружая источник насмерть.
  • Transform — преобразование данных в формат, который ожидает целевая система. Тут чистят дубли, приводят типы, нормализуют справочники, считают агрегаты, применяют бизнес-правила. Происходит это на промежуточном сервере — отдельной машине или кластере с ETL-движком.
  • Load — загрузка готового результата в целевое хранилище. Чаще всего в DWH или OLAP-куб, иногда в operational data store или витрину.

Ключевая идея: в хранилище попадают только обработанные данные. Если что-то отфильтровали или агрегировали — в DWH исходного значения уже нет. Это и преимущество, и ограничение одновременно.

Почему ETL появился именно таким

Чтобы понять ETL, нужно вспомнить, в каком мире он родился. Конец 1980-х и 1990-е годы. Хранилища данных тогда строили на дорогих on-premise серверах: Teradata, Oracle Exadata, IBM DB2, Netezza. Эти железки умели быстро читать и считать аналитику, но имели две особенности:

  1. Дисковое пространство стоило дорого. Хранить в DWH сырые логи или копии OLTP-таблиц было неразумно. Каждый терабайт обходился в тысячи долларов в год — с учётом лицензий, поддержки и обслуживающего персонала.
  2. CPU-ресурсы были ограничены. Если в DWH одновременно работал отчёт CFO и трансформация ночного батча, отчёт страдал. Поэтому трансформации выносили на отдельный ETL-сервер, чтобы не мешать аналитике.

В этих условиях ETL — естественное решение. Дорогая железка занимается только тем, что хорошо умеет: быстрая аналитика по чистым агрегатам. А вся грязная работа происходит снаружи, на дешёвой Linux-машине с ETL-движком.

NOTE

ETL — это не зло из учебников и не «устаревшая технология». Это шаблон, заточенный под мир, в котором storage был дороже compute. Когда соотношение изменилось, появился ELT (про него в следующем уроке).

Инструменты эпохи ETL

Если ты увидишь в вакансии что-то про Informatica PowerCenter, IBM DataStage, Microsoft SSIS или Talend Open Studio — это классические ETL-инструменты, и многие из них продолжают работать. Тебе вряд ли придётся писать новый пайплайн в Informatica, но ты можешь столкнуться с легаси в крупных банках, страховых, телеком-компаниях.

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

Типичный ETL job в Informatica/SSIS

Источник -> серия трансформаций -> приёмник. Каждый блок — отдельная операция: фильтр, lookup, агрегация, sort, type cast.

Sourceorders (Oracle)OLTP-таблица с заказами в продакшен-базе. ETL читает из неё инкрементально по updated_at.
Filterstatus != 'cancelled'Первая трансформация отсеивает отменённые заказы. Они дальше по пайплайну не идут.
LookupcustomersLookup-блок подтягивает данные о клиенте из таблицы customers по customer_id. Это аналог LEFT JOIN, но реализован в памяти ETL-сервера.
Aggregatorsum, countСчитает агрегаты: сумма заказа, количество позиций. Группировка по customer_id и месяцу.
Type castDECIMAL(18,2)Приводит amount к правильному типу для DWH. Источник мог отдавать FLOAT, а в DWH хочется DECIMAL для точной финансовой арифметики.
Targetfact_orders_monthlyФинальная витрина в DWH. Туда попадают только агрегированные строки — построчные данные в этом пайплайне в DWH не приезжают.

В каждый блок ты можешь зайти, посмотреть SQL-запрос или выражение трансформации, поменять параметры. Готовый job деплоится на сервер, который запускается ночью по расписанию.

Зачем transform до load: реальные причины

Помимо экономии storage в DWH, у трансформации до загрузки были и есть конкретные применения:

PII-маскинг. Если в источнике лежат номера паспортов, телефоны, email — в DWH часто нельзя пускать их в открытом виде. ETL хэширует или маскирует чувствительные поля до того, как они уйдут в общедоступное хранилище. Это требование GDPR, HIPAA, PCI DSS.

Соответствие схеме DWH. Источник может отдавать данные в любом формате — XML, CSV, вложенный JSON. DWH ждёт плоскую табличную схему. Преобразование форматов и нормализация — задача ETL.

Бизнес-правила и enrichment. Иногда нужно дообогатить данные ещё на этапе загрузки: посчитать категорию клиента, применить курс валют на дату транзакции, привести коды стран к ISO. Эта логика встроена в ETL-job.

Уменьшение объёма. Если из источника приходит миллиард строк сырого web-лога, а в DWH нужны только дневные агрегаты, нет смысла грузить сырьё. ETL агрегирует и заливает результат — это экономит storage в дорогом DWH.

Минусы, которые привели к ELT

ETL хорошо работал и работает, но у него есть болезненные ограничения, которые в 2010-х стали особенно заметны:

Раз преобразовал — назад не вернёшь. Если позже понадобилась другая агрегация или другой фильтр, придётся снова идти к источнику, снова делать extract. Сырые данные в DWH не сохранились.

ETL-сервер — bottleneck. Когда данных стало терабайты в день, скейлить одну Informatica-машину стало дорого. Лицензия, RAM, CPU — всё это росло вертикально, а не горизонтально.

Логика трансформации заперта в чужом GUI. SQL-запросы в Informatica не лежат в git, не проходят через code review, не покрыты тестами в привычном смысле. Версионирование и CI/CD приходится изобретать поверх.

WARNING

Если ты придёшь работать в банк или страховую и увидишь Informatica PowerCenter — это не означает, что компания «отстаёт». Это означает, что миграция стоит десятки миллионов долларов и переписать сотни пайплайнов одним движением нельзя. Понимать ETL-мир полезно, даже если ты пишешь новые пайплайны в ELT-стиле.

Где ETL живёт в 2026 году

Несмотря на популярность ELT, ETL никуда не делся. Он по-прежнему используется в:

  • Регулируемых отраслях. Финансы, медицина, госсектор — везде, где есть жёсткие требования к маскингу PII до попадания в общедоступное хранилище.
  • Гибридных архитектурах. Когда часть данных живёт on-premise, а DWH в облаке, преобразование часто делают на стороне источника — это и есть ETL.
  • Реверс-сценариях. Когда нужно отправить данные обратно в операционную систему (reverse ETL), часто требуется именно трансформация до загрузки в целевую систему.
Airflow: организация ETL задач через DAG

Попробуй сам

Открой вакансию любой крупной компании из финтеха или страхования и посмотри в требования к Data Engineer. С большой вероятностью встретишь упоминание Informatica, SSIS, DataStage, IBM iDoc или похожих ETL-инструментов рядом с современными ELT-стеками. Подумай, почему компания может одновременно искать специалиста по новой и старой технологии. Какие пайплайны логично оставить в ETL, а какие переписать в ELT? Это и есть взгляд DE на ландшафт — не «что круче», а «что подходит этой задаче».

Проверка знанийKnowledge check
Почему в эпоху ETL трансформации выполнялись на отдельной машине, а не внутри DWH?
ОтветAnswer
Хранилища данных 1990-х (Teradata, Oracle, DB2) имели дорогие CPU и storage — каждый терабайт и каждое ядро стоили серьёзных денег. Запускать на этой железке грязные трансформации означало бы расходовать дорогой ресурс на работу, которую можно сделать на дешёвой Linux-машине с ETL-движком. Поэтому преобразования выносили на отдельный ETL-сервер, а в DWH попадал только подготовленный результат — оптимальный для аналитики.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 5. Что означает буква T в аббревиатуре ETL и где она физически выполняется в классической архитектуре?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4