Files
airflow-greenplum/docs/assignment/README.md
T

7.7 KiB
Raw Blame History

Учебные задания

В стенде уже работает цепочка от Bookings до dm.sales_report. Вы дополните ее загрузками ODS, измерениями DDS и четырьмя витринами DM. Поля, преобразования и бизнес-правила описаны в ТЗ.

Подготовка

Пройдите шаги 1–6 быстрого старта: поднимите стенд, создайте таблицы, запустите эталонную цепочку и проверьте данные. Затем прочитайте руководство о структуре DWH. Открывайте карту рядом с заданием; для Gitea есть инструкция открытия локального HTML.

Таблицы уже созданы, задачи Airflow подключены к SQL-файлам. В учебных *_load.sql и *_dq.sql пока стоит SELECT 1;. Вы заменяете эти заглушки; менять DAG и создавать таблицы заново не требуется.

Первая загрузка: ODS

Начните с ods.airplanes, затем добавьте ods.seats. На карте откройте модели самолетов и места: источники STG уже заполнены. Позже обе таблицы понадобятся dds.dim_airplanes для характеристик модели и расчета ее вместимости.

Готовый пример

Пройдите разбор stg.airports → ods.airports. Это близкий пример полного снимка с выбором батча, преобразованиями и дедупликацией. Для первого задания этого разбора достаточно.

Самостоятельная работа

Откройте часть 1 ТЗ. Сверяйте с ней поля и правила каждой таблицы:

Объект и требования Файлы для реализации DDL для сверки
ods.airplanes airplanes_load.sql, airplanes_dq.sql airplanes_ddl.sql
ods.seats seats_load.sql, seats_dq.sql seats_ddl.sql

Пример проверок: airports_dq.sql. Учтите разницу ключей: у модели это airplane_code, у места - (airplane_code, seat_no).

Запуск и проверка

  1. Дождитесь успешного bookings_to_gp_stage из подготовки. Если STG уже заполнен, новый запуск для этой работы не нужен.
  2. Запустите bookings_to_gp_ods целиком. Он выберет согласованный снимок в resolve_stg_batch_id, затем выполнит load_ods_airplanes → dq_ods_airplanes → load_ods_seats → dq_ods_seats. SQL использует XCom этого запуска, поэтому отдельно от выбора батча загрузку запускать не стоит.
  3. В Greenplum посмотрите строки обеих таблиц: модели, типы числовых полей, ключи мест и метки загрузки. Повторите ODS без нового запуска STG: бизнес-строки и количество ключей должны сохраниться без дублей.
  4. После реализации обеих таблиц запустите bookings_validate и откройте группу validate_ods. Она проверит наличие данных, совпадение ключей с выбранным STG-батчем, отсутствие дублей и NULL в ключах, а также общий _load_id двух таблиц.

В bookings_validate автоматически запускаются все три группы. Пока готовы только задания ODS, оценивайте validate_ods: ошибки DDS и DM на этом этапе ожидаемы. После выполнения всех заданий должны пройти все группы.

Перед следующей загрузкой дождитесь завершения всего bookings_validate и убедитесь, что validate_dds.scd2_restore завершился успешно. SCD2-тест временно меняет данные маршрута, запускает вашу загрузку и восстанавливает таблицы из копии. Параллельная загрузка может потерять свои изменения при восстановлении. Если scd2_restore упал, сначала разберите его лог.

*_dq.sql тоже нужно реализовать: успешный SELECT 1; ничего не проверяет.

Следующие этапы

Этап Требования Готовый пример рядом
DDS: dim_airplanes, dim_passengers Модели, пассажиры dim_airports_load.sql
DDS: dim_routes Версии маршрута SCD2 Разбор сборки факта показывает, как используется версия
DM: airport_traffic → route_performance → monthly_overview → passenger_loyalty Часть 3 ТЗ sales_report_load.sql

Перед DDS разберите загрузку факта. После реализации измерений выполните пересчет факта и витрин. Проверяйте готовый слой своей группой в bookings_validate.

Если застряли

Вернитесь к карточке объекта на карте: там есть DDL, загрузка, DQ и пункт ТЗ. Для конкретного вопроса используйте соглашения об именах, справочник DQ и руководства DAG: ODS, DDS, DM. Полную реализацию можно посмотреть в ветке solution.

Для менторов

Дизайн заданий и педагогическая логика находятся в ветке solution, в docs/design/assignment_design.md.