8.3 KiB
Учебные задания по стенду
Этот документ собирает в одном месте задания для менти.
Он разбит на блоки: от базовой работы с CSV‑pipeline до более продвинутого сценария с демо‑БД bookings и слоем STG в Greenplum.
Если вы только начинаете, выполняйте задания по порядку. К разделу про bookings можно вернуться позже.
1. Базовый CSV‑pipeline (csv_to_greenplum)
Основная цель этого блока — понять, как устроен простой ETL: генерация данных через pandas, сохранение в CSV и загрузка в Greenplum.
1.1. Разбор готового pipeline
- Найдите DAG
csv_to_greenplumвairflow/dags/csv_to_greenplum.py. - Ответьте себе на вопросы (можно коротко в отдельном файле/блокноте):
- какие задачи (tasks) входят в DAG и что делает каждая из них;
- какие таблицы создаются в Greenplum;
- где физически лежат CSV‑файлы;
- какие параметры управляют размером датасета.
- Поднимите стенд и запустите DAG:
make up && make airflow-init- включите и запустите DAG
csv_to_greenplumв Airflow UI.
- Проверьте результат в Greenplum:
make gp-psqlSELECT COUNT(*) FROM public.orders;SELECT * FROM public.orders LIMIT 5;
1.2. Изменение параметров генерации
- Найдите, где задаётся количество строк для генерации (
CSV_ROWSв.envи параметр в DAG). - Поставьте другое значение и перезапустите DAG:
- оцените, как изменилось количество строк в
public.orders; - убедитесь, что пайплайн по‑прежнему работает без ошибок.
- оцените, как изменилось количество строк в
- Попробуйте изменить схему данных (добавить колонку в CSV и таблицу в Greenplum):
- добавьте новую колонку в генерацию pandas;
- обновите DDL/SQL, чтобы колонка появилась в таблице
public.orders; - перезапустите DAG и убедитесь, что новая колонка заполняется.
1.3. Собственные проверки качества данных
- Найдите DAG
csv_to_greenplum_dqвairflow/dags/csv_to_greenplum_dq.py. - Посмотрите, какие проверки уже реализованы (наличие таблицы, схема, дубликаты).
- Добавьте ещё одну простую проверку, например:
- проверка, что в таблице
public.ordersне больше N строк; - проверка, что поле (например,
order_price) не содержит отрицательных значений; - проверка, что нет строк с
NULLв ключевых колонках.
- проверка, что в таблице
- Запустите DAG
csv_to_greenplum_dqи убедитесь, что:- новая проверка проходит на «хороших» данных;
- при нарушении условия DAG падает с понятной ошибкой.
2. Greenplum и модель данных (введение)
В следующих заданиях мы будем опираться на демо‑БД bookings (Postgres) и слой STG в Greenplum.
На этом этапе достаточно бегло посмотреть на структуру и понять общую идею, детальная проработка пойдёт позже.
2.1. Знакомство с демо‑БД bookings
- Прочитайте
bookings/README.md— какие сервисы и команды относятся к демобазе. - Поднимите стенд и выполните:
make upmake bookings-init
- Подключитесь к демобазе:
make bookings-psql- посмотрите таблицы в схеме
bookings(например,\dt bookings.*).
- Найдите таблицу
bookings.bookingsи посмотрите на её структуру:- какие типы колонок используются;
- какие поля выглядят как ключи, даты, суммы.
2.2. Знакомство с STG в Greenplum
- Прочитайте
sql/stg/bookings_ddl.sqlи мини‑READMEdocs/internal/bookings_stg_readme.md(если интересно —docs/internal/bookings_stg_design.md). - Ответьте себе на вопросы:
- чем внешняя таблица
stg.bookings_extотличается от внутреннейstg.bookings; - зачем нужны тех.колонки
src_created_at_ts,load_dttm,batch_id; - чем слой STG отличается от итоговых витрин (DDS/DM) с точки зрения моделирования.
- чем внешняя таблица
- Выполните
make ddl-gp, затем зайдите в Greenplum (make gp-psql) и проверьте наличие схемы и таблиц:\dnи\dt stg.*SELECT * FROM stg.bookings LIMIT 5;(после запуска соответствующего DAG).
3. DAG bookings_to_gp_stage (заготовка заданий)
Этот DAG показывает путь данных от демо‑БД bookings в Postgres до сырого слоя STG в Greenplum.
Сейчас он уже реализован как учебный пример, а в будущем вокруг него появятся отдельные задания по моделированию DWH.
3.1. Что есть сейчас
- Откройте
airflow/dags/bookings_to_gp_stage.py. - Найдите в коде ссылки на SQL‑файлы:
sql/src/bookings_generate_day_if_missing.sqlsql/stg/bookings_load.sqlsql/stg/bookings_dq.sql
- Соотнесите шаги DAG с документом
docs/internal/bookings_stg_readme.md:- генерация учебного дня в
bookings.bookings; - загрузка инкремента в
stg.bookings; - проверка количества строк между источником и STG.
- генерация учебного дня в
На этом этапе достаточно понять общую цепочку. Детальные задания по переработке модели данных и построению ODS/DDS/DM слоёв будут добавлены позже.
3.2. Идеи для будущих заданий (черновик)
Ниже — набросок задач, к которым мы вернёмся, когда базовые темы по Airflow и CSV‑pipeline будут освоены.
Планируемые направления:
- Спроектировать модель данных для основных сущностей демобазы bookings (рейсы, билеты, перелёты) в слоях ODS/DDS/DM.
- Реализовать слой ODS поверх STG, аккуратно работая с временными атрибутами и ключами.
- Построить витрины (DM) для типичных аналитических вопросов: загрузка рейсов, выручка по направлениям, динамика бронирований.
- Добавить DAG’и, которые используют
stg.bookingsкак источник и строят следующие слои DWH. - Расширить проверки качества данных для потоков bookings → STG → витрины.
Когда будете готовы к этим темам, вернитесь к этому разделу — он станет основой для следующего «модуля» лабораторных заданий.