From 589c556b17096f144dce2a41781938388ccb17af Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sat, 6 Jun 2026 18:33:14 +0300 Subject: [PATCH] =?UTF-8?q?docs(course):=20=D1=81=D0=BA=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=E2=80=94?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BD=D1=82=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D1=83=D1=80=D0=BE=D0=BA=D0=BE=D0=B2=202/3/5=20?= =?UTF-8?q?=D0=B8=20OPERATIONS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - сквозной ревью курса нашёл расхождения учебного текста с реальным выводом стенда и один баг в операторских доках — менти увидел бы не то, что в уроке. - Что: - урок 2: порядок строк «Статистики ODS» выровнен под фактический вывод run_batch.sh (4 основных таблицы, затем 4 *_errors); снято «по строчкам». - урок 3: добавлено пояснение, что check_date — это today() из витрины (у менти будет своя дата, не как в примере). - урок 5: «должно быть не в Alerting» → «в состоянии Normal (не Alerting)». - OPERATIONS.md: несуществующий FULL=1 заменён на реальный knob LIMIT=50 (по умолчанию полный объём — подтверждено load_kafka_data.sh:27,128). - Проверка: - git diff показывает 4 файла, +9/-6; grep 'FULL=' по docs/ пуст. - порядок таблицы сверен с run_batch.sh:111-118; today() — sql/dm/40_dds_to_dm.sql:105. --- docs/OPERATIONS.md | 2 +- docs/course/lessons/02_stg_to_ods.md | 8 ++++---- docs/course/lessons/03_ods_to_dds.md | 3 +++ docs/course/lessons/05_monitoring.md | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md index 885ad83..9470e80 100644 --- a/docs/OPERATIONS.md +++ b/docs/OPERATIONS.md @@ -10,7 +10,7 @@ - `make down` (остановить и удалить контейнеры/сети проекта) - `make clean` (полная очистка: `down -v --remove-orphans`) - `make ddl` (применяет SQL из `sql/ddl/00_databases.sql` и `sql/ddl/*/*.sql` в ClickHouse) -- `make data` (пересоздаёт топики и заливает небольшой срез данных в Kafka; полный режим — `FULL=1 make data`) +- `make data` (пересоздаёт топики и заливает данные в Kafka; по умолчанию полный объём, срез — `LIMIT=50 make data`) - `make transform` (запускает batch-процесс ODS -> DDS -> DM) - `make superset-init` (повторная инициализация Superset: подключение к ClickHouse, датасеты, дашборд) - `docker compose ps` diff --git a/docs/course/lessons/02_stg_to_ods.md b/docs/course/lessons/02_stg_to_ods.md index 88a7d92..8265017 100644 --- a/docs/course/lessons/02_stg_to_ods.md +++ b/docs/course/lessons/02_stg_to_ods.md @@ -102,17 +102,17 @@ make transform # батч STG → ODS → DDS → DM (нас инте Статистика ODS: ┌─table──────────────────────┬─rows─┐ │ ods.browser_event │ 50 │ - │ ods.browser_event_errors │ 0 │ │ ods.location_event │ 50 │ - │ ods.location_event_errors │ 0 │ │ ods.device_by_click │ 26 │ - │ ods.device_by_click_errors │ 0 │ │ ods.geo_by_click │ 26 │ + │ ods.browser_event_errors │ 0 │ + │ ods.location_event_errors │ 0 │ + │ ods.device_by_click_errors │ 0 │ │ ods.geo_by_click_errors │ 0 │ └────────────────────────────┴──────┘ ``` -Прочитаем эту табличку по строчкам — в ней три вещи, которые стоит заметить. +Прочитаем эту табличку — в ней три вещи, которые стоит заметить. **Все четыре `*_errors` — по нулям.** Значит, наш срез чистый: ни одна запись не дала ошибки разбора, столбец `parse_errors` у всех пустой. Это нормально — данные в демо аккуратные. diff --git a/docs/course/lessons/03_ods_to_dds.md b/docs/course/lessons/03_ods_to_dds.md index fe1c8d9..86ff12b 100644 --- a/docs/course/lessons/03_ods_to_dds.md +++ b/docs/course/lessons/03_ods_to_dds.md @@ -105,6 +105,9 @@ DDS»** — счётчики строк по двум нашим сущност └────────────┴───────┴─────────────────────┴───────────────┴─────────────┘ ``` +В колонке `check_date` стоит `today()` из кода витрины, так что у тебя там будет сегодняшняя +дата — не пугайся, если она не совпадёт с примером. + `orphan_events = 0` — ни одной сироты. Каждое из 50 событий нашло свой клик в `dds.click`. На чистом демо-срезе так и должно быть: данные аккуратные, ничего не потерялось. В секции 4 мы сироту устроим сами — и эта строка оживёт. diff --git a/docs/course/lessons/05_monitoring.md b/docs/course/lessons/05_monitoring.md index a7dacfa..db96b03 100644 --- a/docs/course/lessons/05_monitoring.md +++ b/docs/course/lessons/05_monitoring.md @@ -270,7 +270,7 @@ Grafana. Открой Grafana → **Airflow Overview** и найди панель **Scheduler Heartbeat Rate**. Потом открой **Alerting → Alert rules** и найди правило `Airflow Scheduler Down`. Перед -экспериментом оно должно быть не в `Alerting`. +экспериментом оно должно быть в состоянии `Normal` (не `Alerting`). Можно проверить и командой: