docs(testing): добавлены проверки source-данных перед DAG-тестами
- Зачем: - исключены ложные падения DQ при пустом source в bookings-db. - Что: - в TESTING.md добавлены pre-check команды COUNT(*) перед Trigger DAG. - в docs/agent-dag-testing.md добавлена обязательная проверка source и fallback при COUNT(*) = 0. - в таблицу типичных проблем добавлен кейс падения check_airports_dq/check_airplanes_dq с ошибкой "..._ext нет строк". - Проверка: - rg -n "source непустой|COUNT\(\*\) = 0|bookings-generate-day|check_airports_dq" TESTING.md docs/agent-dag-testing.md
This commit is contained in:
@@ -39,6 +39,11 @@
|
|||||||
|
|
||||||
- DAG `bookings_to_gp_stage` (полная проверка цепочки bookings → Greenplum STG):
|
- DAG `bookings_to_gp_stage` (полная проверка цепочки bookings → Greenplum STG):
|
||||||
- предварительно выполнить один раз: `make bookings-init` (установка демобазы `demo` в контейнере `bookings-db`) и `make ddl-gp` (создаёт STG слой в Greenplum, включая внешние `*_ext` через PXF);
|
- предварительно выполнить один раз: `make bookings-init` (установка демобазы `demo` в контейнере `bookings-db`) и `make ddl-gp` (создаёт STG слой в Greenplum, включая внешние `*_ext` через PXF);
|
||||||
|
- перед Trigger проверить, что в source реально есть данные (все значения должны быть `> 0`):
|
||||||
|
- `docker compose exec bookings-db psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.bookings;"`
|
||||||
|
- `docker compose exec bookings-db psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.airports_data;"`
|
||||||
|
- `docker compose exec bookings-db psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.airplanes_data;"`
|
||||||
|
- если хотя бы один `COUNT(*) = 0`, не запускать DAG: повторить `make bookings-init`; если после этого `bookings.bookings` всё ещё пустая, выполнить `make bookings-generate-day` и снова проверить `COUNT(*)`;
|
||||||
- важно: DAG `bookings_stg_ddl` **не** создаёт базу `demo` в `bookings-db`; если вы делали `docker compose down -v` / `make clean`, `make bookings-init` обязателен;
|
- важно: DAG `bookings_stg_ddl` **не** создаёт базу `demo` в `bookings-db`; если вы делали `docker compose down -v` / `make clean`, `make bookings-init` обязателен;
|
||||||
- включить DAG `bookings_to_gp_stage` и запустить `Trigger DAG`;
|
- включить DAG `bookings_to_gp_stage` и запустить `Trigger DAG`;
|
||||||
- убедиться, что все задачи завершились со статусом Success (включая загрузки справочников/транзакций и DQ);
|
- убедиться, что все задачи завершились со статусом Success (включая загрузки справочников/транзакций и DQ);
|
||||||
|
|||||||
@@ -24,6 +24,25 @@ make ddl-gp # создать STG-слой и внешние PXF-
|
|||||||
|
|
||||||
Если стек ранее сносился (`make clean`), шаги 1-3 обязательны.
|
Если стек ранее сносился (`make clean`), шаги 1-3 обязательны.
|
||||||
|
|
||||||
|
Перед запуском `bookings_to_gp_stage` обязательно проверьте, что source непустой:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Все значения ниже должны быть > 0
|
||||||
|
docker compose exec bookings-db \
|
||||||
|
psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.bookings;"
|
||||||
|
|
||||||
|
docker compose exec bookings-db \
|
||||||
|
psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.airports_data;"
|
||||||
|
|
||||||
|
docker compose exec bookings-db \
|
||||||
|
psql -U bookings -d demo -At -c "SELECT COUNT(*) FROM bookings.airplanes_data;"
|
||||||
|
```
|
||||||
|
|
||||||
|
Если хотя бы один `COUNT(*) = 0`, **не запускайте DAG**:
|
||||||
|
1. Выполните `make bookings-init`.
|
||||||
|
2. Повторите проверки `COUNT(*)`.
|
||||||
|
3. Если `bookings.bookings` всё ещё пустая, выполните `make bookings-generate-day` и проверьте снова.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Уровень 1. Локальные проверки (без Docker)
|
## Уровень 1. Локальные проверки (без Docker)
|
||||||
@@ -341,3 +360,4 @@ generate_bookings_day → load_bookings → check_bookings_dq
|
|||||||
| Greenplum `unhealthy` | PXF не стартовал (долгая инициализация) | Подождать 2-3 минуты, проверить `docker compose ps` |
|
| Greenplum `unhealthy` | PXF не стартовал (долгая инициализация) | Подождать 2-3 минуты, проверить `docker compose ps` |
|
||||||
| `relation ... does not exist` | Не применён DDL | Выполнить `make ddl-gp` |
|
| `relation ... does not exist` | Не применён DDL | Выполнить `make ddl-gp` |
|
||||||
| Пустые таблицы stg | Не выполнен `make bookings-init` | Выполнить `make bookings-init`, затем перезапустить DAG |
|
| Пустые таблицы stg | Не выполнен `make bookings-init` | Выполнить `make bookings-init`, затем перезапустить DAG |
|
||||||
|
| `check_airports_dq` / `check_airplanes_dq` падают с `..._ext нет строк` | Source-таблицы в `bookings-db` пустые | Проверить `COUNT(*)` в `bookings.bookings`, `bookings.airports_data`, `bookings.airplanes_data`; затем `make bookings-init`/`make bookings-generate-day` |
|
||||||
|
|||||||
Reference in New Issue
Block a user