Учебные задания
В стенде уже работает цепочка от Bookings до dm.sales_report.
Сначала вы восстановите прием справочника в STG, затем дополните цепочку
загрузками ODS, измерениями DDS и четырьмя витринами DM.
Требования к этим расширениям описаны в ТЗ.
Подготовка
Пройдите шаги 1–6 быстрого старта: поднимите стенд, создайте таблицы, запустите эталонную цепочку и проверьте данные. Затем прочитайте руководство о структуре DWH. Открывайте карту рядом с заданием; для Gitea есть инструкция открытия локального HTML.
Прием справочника: PXF → STG
Пройдите «Восстановите прием справочника из источника».
Вы разберете готовый участок airports, восстановите внешнюю таблицу
и загрузку. На повторном запуске и переименовании аэропорта выясните,
как загрузка сохраняет снимки источника.
Первая загрузка: ODS
После приема справочника реализуйте ods.airplanes, затем ods.seats.
На карте откройте модели самолетов
и места: источники STG уже заполнены.
Позже обе таблицы понадобятся dds.dim_airplanes для характеристик модели
и расчета ее вместимости.
Таблицы уже созданы, задачи Airflow подключены к SQL-файлам.
В учебных *_load.sql и *_dq.sql пока стоит SELECT 1;.
В заданиях ODS, DDS и DM вы заменяете эти заглушки; менять DAG
и создавать таблицы заново не требуется.
Готовый пример
Пройдите разбор stg.airports → ods.airports. Это близкий пример полного снимка с выбором батча, преобразованиями и дедупликацией. Для первых загрузок ODS этого разбора достаточно.
Самостоятельная работа
Откройте часть 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).
Запуск и проверка
- Используйте общий снимок после восстановления источника в лабораторной PXF. Новый запуск STG для этой работы не нужен.
- Запустите
bookings_to_gp_odsцеликом. Он выберет согласованный снимок вresolve_stg_batch_id, затем выполнитload_ods_airplanes → dq_ods_airplanes → load_ods_seats → dq_ods_seats. SQL использует XCom этого запуска, поэтому отдельно от выбора батча загрузку запускать не стоит. - В Greenplum посмотрите строки обеих таблиц: модели, типы числовых полей, ключи мест и метки загрузки. Повторите ODS без нового запуска STG: бизнес-строки и количество ключей должны сохраниться без дублей.
- После реализации обеих таблиц запустите
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.