Учебник Data Engineering для начинающих
Дата-инженер строит конвейеры, по которым данные текут от источников к аналитикам и моделям. Этот курс проведёт вас от базовых понятий (что такое ETL, зачем нужны хранилища, чем batch отличается от streaming) до практики оркестрации в Apache Airflow: DAG, операторы, расписания, зависимости через >>, backfill, идемпотентность и инкрементальная загрузка. Вы соберёте полный пайплайн «CSV → преобразование → база данных», научитесь валидировать данные и мониторить конвейеры. Курс рассчитан на тех, кто уже знает Python на базовом уровне и хочет войти в профессию data engineer.
Курс «Data Engineering: ETL и Airflow» состоит из 6 разделов и 19 уроков: Профессия и основы дата-инженерии, Хранение данных и форматы, Моделирование данных, Apache Airflow: основы оркестрации, Зависимости, backfill и идемпотентность и Практика: качество, ETL-пайплайн и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Профессия и основы дата-инженерии
- Кто такой data engineer и зачем он нужен
Чем занимается дата-инженер, как его роль отличается от аналитика и ML-инженера, и почему без него ломаются данные в компании.
- ETL против ELT
Чем ETL отличается от ELT, когда преобразовывать данные до загрузки, а когда после, и почему облачные хранилища сместили выбор в сторону ELT.
- Источники и приёмники данных
Откуда берутся данные: базы, API, файлы, очереди. Куда они едут: хранилища, витрины, поисковые движки. Идемпотентные приёмники и upsert.
- Кто такой data engineer и зачем он нужен
2 Хранение данных и форматы
- Batch против streaming
Пакетная обработка против потоковой: чем отличаются, когда нужен реальный масштаб времени, окна, латентность и пропускная способность.
- Data lake, warehouse и lakehouse
Чем озеро данных отличается от хранилища, что такое lakehouse, schema-on-read против schema-on-write, и где что хранить.
- Форматы данных: CSV, JSON, Parquet
Текстовые форматы CSV и JSON против колоночного Parquet: построчное и колоночное хранение, сжатие, типы и почему аналитика любит Parquet.
- Batch против streaming
3 Моделирование данных
- Схема звезды: факты и измерения
Звёздная схема в хранилище: таблица фактов и таблицы измерений, зачем нужна денормализация и как это ускоряет аналитику.
- Партиционирование таблиц
Партиционирование данных по дате: что это, зачем нужен partition pruning, как это ускоряет запросы и упрощает повторную загрузку.
- Нормализация против денормализации
Нормализация для OLTP и денормализация для OLAP: когда дробить таблицы, а когда объединять, и почему аналитика выбирает плоские таблицы.
- Схема звезды: факты и измерения
4 Apache Airflow: основы оркестрации
- Что такое оркестрация и Airflow
Зачем нужна оркестрация конвейеров, что такое Apache Airflow, как он планирует и запускает задачи, и из чего состоит его архитектура.
- DAG, задачи и операторы
Что такое DAG, чем task отличается от operator, какие бывают операторы в Airflow и как из них собирается граф конвейера.
- Первый DAG: расписание и параметры
Как задать start_date, schedule и catchup в DAG Airflow, что такое логическая дата запуска и почему catchup так важен.
- Что такое оркестрация и Airflow
5 Зависимости, backfill и идемпотентность
- Зависимости задач: оператор сдвига
Как задать порядок задач в Airflow через оператор сдвига, ветвление и fan-out/fan-in, и как читать стрелки зависимостей.
- Backfill: перезаливка истории
Что такое backfill в Airflow, как перезапустить пайплайн за прошлые даты, чем он отличается от catchup и почему важна идемпотентность.
- Идемпотентность и повторные запуски
Что такое идемпотентность пайплайна, почему повторный запуск не должен менять результат, и приёмы: перезапись партиций, upsert, delete-insert.
- Зависимости задач: оператор сдвига
6 Практика: качество, ETL-пайплайн и эксплуатация
- Качество данных и валидация
Зачем валидировать данные в конвейере, какие проверки бывают (схема, диапазоны, дубли, свежесть) и почему пайплайн должен падать на плохих данных.
- ETL-пайплайн: CSV в базу данных
Полный пример ETL: извлечь CSV, преобразовать средствами Python, загрузить в таблицу через SQL. Соединяем Extract, Transform и Load в один пайплайн.
- Инкрементальная загрузка
Инкрементальная загрузка вместо полной перезаливки: водяной знак (watermark), загрузка только новых данных и связь с идемпотентностью.
- Мониторинг и обзор инструментов
Мониторинг пайплайнов: алерты, метрики, SLA. Обзор экосистемы: dbt, Spark и Kafka — что они решают и где про них узнать подробнее.
- Качество данных и валидация