docs(labs): упрощен язык учебных заданий
Зачем: помочь менти понять действия, проверить результат и оценить освоенное умение. Что: вычитаны 13 заданий основной программы и общий индекс. Итоговые списки обращены к учащемуся, убраны история разработки и повторы. Правила учебного текста записаны в программе, из AGENTS.md добавлена ссылка. Проверка: git diff --check, локальные ссылки и ссылки на измененные заголовки прошли. Блоки кода и таблицы требований совпадают с исходными. Упражнения на стенде повторно не выполнялись: изменен только текст.
This commit is contained in:
1 parent
a03838b953
commit
4058e18864
16 files changed
+287
-269
No files matched your search
@@ -1,7 +1,7 @@
|
||||
# Перепишите разбор заказов в ODS
|
||||
|
||||
**Чему учит:** сначала измерить обе ветви разбора на управляемом срезе, затем
|
||||
переписать переход и повторить тот же опыт.
|
||||
**Чему учит:** переписать разбор заказов и на пробных сообщениях проверить,
|
||||
что годные строки и брак попадают в свои таблицы без потерь.
|
||||
|
||||
## Сначала прочитать
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
- [`orders_ingest`](../../dags/orders_ingest.py);
|
||||
- [`order_parse.sql`](../../sql/ods/order_parse.sql).
|
||||
|
||||
Готового запроса для сверки управляемого среза в репозитории нет.
|
||||
Запрос для проверки пробных строк вы напишете сами.
|
||||
|
||||
## Граница задания
|
||||
## Что предстоит сделать
|
||||
|
||||
Сначала проведите опыт на готовом `order_parse.sql`. Затем удалите его SQL,
|
||||
соберите разбор заново и повторите опыт с другим маркером.
|
||||
@@ -72,7 +72,7 @@ jq -cn --arg marker "$LAB_MARKER" --arg day "$LAB_DAY" '
|
||||
' > "$LAB_BATCH"
|
||||
```
|
||||
|
||||
Отправьте файл в обычный топик заказов штатным производителем контейнера:
|
||||
Отправьте файл в обычный топик заказов утилитой из контейнера Kafka:
|
||||
|
||||
```bash
|
||||
docker compose exec -T kafka /opt/kafka/bin/kafka-console-producer.sh \
|
||||
@@ -123,7 +123,7 @@ SETTINGS mutations_sync = 2;
|
||||
|
||||
В ClickHouse 26.3 мутации выполняются в фоне. С `mutations_sync = 2` команда
|
||||
ждет их завершения на всех репликах. Запросами к трем Distributed-таблицам
|
||||
докажите, что строк маркера не осталось, затем удалите временный файл.
|
||||
убедитесь, что строк маркера не осталось, затем удалите временный файл.
|
||||
|
||||
Группа `clickstream_orders` уже подтвердила эти сообщения, поэтому обычный
|
||||
повтор `orders_ingest` их не прочитает. В Kafka они остаются до удаления по
|
||||
@@ -137,8 +137,8 @@ SETTINGS mutations_sync = 2;
|
||||
|
||||
## Перепишите разбор
|
||||
|
||||
Удалите готовый SQL из `sql/ods/order_parse.sql` и сохраните его договор с
|
||||
`orders_ingest`:
|
||||
Удалите готовый SQL из `sql/ods/order_parse.sql` и напишите свой. Чтобы
|
||||
`orders_ingest` мог его использовать, сохраните следующие условия:
|
||||
|
||||
- вход - строки `stg.orders_raw_dist` одного `{load_id:String}`;
|
||||
- каждая строка среза попадает ровно в один результат: годный заказ или брак;
|
||||
@@ -161,21 +161,20 @@ SETTINGS mutations_sync = 2;
|
||||
шард. Затем очистите второй срез теми же адресными командами и запустите
|
||||
`dq_check`.
|
||||
|
||||
## Когда можно остановиться
|
||||
## Завершите опыт
|
||||
|
||||
Оба маркера отсутствуют в STG, ODS, таблице брака и DDS; временные файлы
|
||||
удалены. Семь DQ дают зеленый результат. В таком состоянии можно перейти к
|
||||
Убедитесь, что оба маркера отсутствуют в STG, ODS, таблице брака и DDS,
|
||||
временные файлы удалены, а семь проверок успешны. Теперь можно перейти к
|
||||
сборке DDS, не снимая паузу с модельного времени. Если вы прерываетесь и до
|
||||
опыта `world_live` работал, снимите его с паузы.
|
||||
|
||||
## Приемка
|
||||
## Что должно получиться
|
||||
|
||||
- [ ] до переписывания зафиксированы баланс 4 = 1 + 3, три класса брака,
|
||||
деловые поля текущей версии и фактический шард;
|
||||
- [ ] переписан только `sql/ods/order_parse.sql`, несущая инфраструктура не
|
||||
изменена;
|
||||
- [ ] после переписывания новый срез дал тот же результат;
|
||||
- [ ] обе годные строки различали `created_at` и `updated_at`;
|
||||
- [ ] проверки `hostName()` не нашли строки ODS на чужом шарде;
|
||||
- [ ] строки обоих опытов удалены только по своим маркерам;
|
||||
- [ ] после очистки общий конвейер и семь DQ находятся в зеленом состоянии.
|
||||
- [ ] у вас сохранены результаты до переписывания: четыре строки дали
|
||||
один заказ и три класса брака; вы сверили поля текущей версии и шард;
|
||||
- [ ] вы переписали `sql/ods/order_parse.sql`, сохранив остальные части стенда;
|
||||
- [ ] ваш разбор дал тот же результат на новой пробной пачке;
|
||||
- [ ] вы проверили разные значения `created_at` и `updated_at` у годной
|
||||
строки в обоих опытах и подтвердили правильный шард через `hostName()`;
|
||||
- [ ] вы удалили строки обоих опытов по их маркерам;
|
||||
- [ ] после очистки конвейер и все семь проверок успешны.
|
||||
Reference in new issue
Block a user