Руководства STG/ODS/DDS/DM сверены с действующими SQL и DAG, ожидания учебных заглушек связаны с ТЗ. Самопроверка заданий отделена от проверок разработки и исторических планов. Для dim_routes закреплено обновление описательных полей только у открытых версий. SQL, DAG, DDL и настройки стенда не менялись. Проверки: make lint; make test (4 passed, 14 skipped); карта; 292 локальные ссылки; маршрут чтения и карта в Chromium. Живой ETL не запускался.
57 lines
4.9 KiB
Markdown
57 lines
4.9 KiB
Markdown
# Порядок запуска DAG
|
|
|
|
Все загрузочные DAG в стенде запускаются вручную (`schedule=None`).
|
|
Завершение одного слоя не запускает следующий автоматически.
|
|
Подготовка Docker и источника находится в [быстром старте](../README.md#быстрый-старт-основной-сценарий-bookings--stg--ods--dds--dm).
|
|
|
|
## Создание таблиц
|
|
|
|
Перед первой загрузкой выполните по порядку:
|
|
|
|
1. `bookings_stg_ddl` создает STG и внешние таблицы `*_ext` для чтения через PXF.
|
|
2. `bookings_ods_ddl` создает типизированные таблицы ODS.
|
|
3. `bookings_dds_ddl` создает измерения и факт DDS.
|
|
4. `bookings_dm_ddl` создает витрины DM.
|
|
|
|
Альтернатива четырем запускам: `make ddl-gp`.
|
|
DDL создает структуру; для наполнения нужны отдельные загрузки.
|
|
В заданиях таблицы и задачи уже подготовлены, поэтому перед каждым
|
|
повторным запуском загрузки применять DDL не требуется.
|
|
|
|
## Проход данных по слоям
|
|
|
|
Запускайте следующий DAG после успешного завершения всех задач предыдущего.
|
|
Эта последовательность показывает зависимости загрузок; связи строк и зерно
|
|
объектов смотрите на [карте](design/architecture-map.html), открытой
|
|
[локально](design/db_schema.md#как-открыть-карту).
|
|
|
|
| Порядок | DAG и руководство | Что меняется в данных |
|
|
|---|---|---|
|
|
| 1 | [bookings_to_gp_stage](bookings_to_gp_stage.md) | Генератор добавляет учебный день в Bookings; STG получает инкременты транзакций и полные снимки справочников с `_load_id = run_id` STG |
|
|
| 2 | [bookings_to_gp_ods](bookings_to_gp_ods.md) | Resolver выбирает общий STG-батч справочников; их снимки заменяются целиком. Транзакционные загрузки читают дельту STG по `_load_ts` и обновляют строки по бизнес-ключу |
|
|
| 3 | [bookings_to_gp_dds](bookings_to_gp_dds.md) | Сначала выполняются загрузки измерений, затем факт: вставляются новые пары `(ticket_no, flight_id)`, у существующих обновляются цена, место и признак посадки |
|
|
| 4 | [bookings_to_gp_dm](bookings_to_gp_dm.md) | `sales_report` пересчитывает полные агрегаты дат, затронутых изменениями факта; поведение остальных витрин задано в ТЗ |
|
|
|
|
На исходной `main` готовы весь STG, семь таблиц ODS, календарь, аэропорты,
|
|
тарифы, факт и `sales_report`. Загрузки и DQ остальных объектов являются
|
|
[заданиями](assignment/README.md). Успех этих задач с `SELECT 1;` оставляет
|
|
таблицы пустыми. У факта до реализации измерений могут быть `NULL` в
|
|
`passenger_sk`, `route_sk` и `airplane_sk`.
|
|
|
|
## Повторный запуск и проверка задания
|
|
|
|
Чтобы получить следующий учебный день, повторите цепочку STG → ODS → DDS → DM.
|
|
Когда проверяете правку SQL своего слоя на уже загруженных источниках,
|
|
начните с этого слоя; новый STG запустит генератор еще раз.
|
|
Подробности выбора батча и повторного запуска находятся в руководстве слоя.
|
|
|
|
После реализации измерений обычный повтор DDS не заполнит старые SK факта.
|
|
Выполните [пересчет по ТЗ](assignment/analyst_spec.md#пересчёт-факта-после-реализации-измерений),
|
|
затем обновите DM.
|
|
|
|
Для самопроверки задания откройте
|
|
[«Запуск и проверка»](assignment/README.md#запуск-и-проверка).
|
|
`bookings_validate` запускайте отдельно от загрузок: дождитесь всего DAG
|
|
и успешного `validate_dds.scd2_restore` перед следующей записью в хранилище.
|
|
Тест SCD2 временно меняет данные и восстанавливает их из копии.
|