docs(labs): уточнены самопроверка и формулировки заданий

Зачем: убрать механические повторы в итогах и избежать ложных расхождений при проверке графика Superset.

Что: уточнены правила итоговых списков и название задания о проверках заказов. В разборе событий разделены учет повторных доставок и выбор событий ODS для сравнения. Первый график Superset и проверочный SQL используют весь период витрины.

Проверка: git diff --check, локальные ссылки и переходы к измененным заголовкам прошли. Блоки кода и таблицы требований сохранены. Согласованность периода графика с SQL проверена по тексту; повторный проход через интерфейс Superset не выполнялся.
This commit is contained in:
ddadmin committed 2026-09-13 11:20:03 -04:00
1 parent 4058e18864
commit 3bfe9ca4ee
15 files changed
+51 -46

No files matched your search

+17 -12
View File
@@ -116,6 +116,8 @@ Airflow. При включенном `world_live` посмотрите его т
## Приведите стороны к одному зерну
### Учтите повторные доставки
В STG одна строка представляет доставку. Повтор сообщения остается второй
строкой. В `ods.event_v` одна строка представляет актуальное событие, потому
что представление читает физическую таблицу с `FINAL`.
@@ -124,17 +126,20 @@ Airflow. При включенном `world_live` посмотрите его т
полных ключей среди годных доставок. Разница между числом доставок и этим
счетом показывает повторы в исходном срезе.
Выберите строки ODS для сравнения независимо от своего условия отбора и
результата вставки. Снова возьмите весь исходный STG-срез. По координатам Kafka
исключите доставки, которые есть в `ods.event_errors_dist`. У оставшихся
доставок извлеките `WatchID` без риска прервать запрос и выберите эти события из свежего
`ods.event_v`.
### Выберите события ODS для сравнения
Свяжите сырую доставку с ODS по `WatchID`: по договору генератора это уникальный
идентификатор события. Здесь он нужен только для выбора событий ODS.
Удаление повторов и последующее соединение используют полный физический ключ.
Не берите список событий из своей таблицы и не применяйте к нему свое условие
отбора. Иначе ошибочно отвергнутая строка исчезнет с обеих сторон сверки.
Теперь нужно найти в ODS события из выбранного среза. Список стройте по
исходным доставкам: если взять его из своей таблицы, ошибочно отвергнутое
событие исчезнет с обеих сторон сверки и потеря останется незамеченной.
Снова возьмите весь исходный STG-срез. По координатам Kafka исключите
доставки, которые есть в `ods.event_errors_dist`. У оставшихся извлеките
`WatchID` без риска прервать запрос и выберите эти события из свежего
`ods.event_v`. Свое условие отбора здесь не применяйте: решение о годности
доставки вы берете из результата стендового разбора.
`WatchID` связывает доставку с событием в ODS. Для удаления повторов и
сравнения полей дальше используйте полный физический ключ из схемы таблицы.
## Сверьте 47 полей
@@ -198,8 +203,8 @@ Kafka после опыта не нужно.
- [ ] у вас сохранены границы выбранного среза, число строк и координаты
доставки по партициям Kafka;
- [ ] вы собрали свою таблицу со всеми 47 полями и `_load_ts`, используя
те же правила удаления повторов, что и ODS;
- [ ] ваша таблица содержит все 47 полей и `_load_ts` и обрабатывает
повторы по тем же правилам, что и ODS;
- [ ] ваш разбор принимает только JSON-объекты с точным набором ключей и
пятью опорными полями, которые преобразуются в нужные типы;
- [ ] вы сверили число исходных строк с суммой годных и отвергнутых,