docs(warehouse): объяснены расчет строк и замена дневных разделов

Зачем: выражения «собираются в донор» и «публикуются дни» требовали
знать устройство конвейера до чтения объяснения.

Что: описаны назначение промежуточных таблиц и последовательность
расчета, записи и замены разделов. Перечитаны остальные объяснения:
выбор дней, разворачивание позиций заказа, проверка сессий и повтор запуска.

Проверка: make lint, git diff --check, локальные ссылки и якоря.
SQL без комментариев и AST обоих дагов без строк документации не изменились.

Refs: #249
This commit is contained in:
ddadmin committed 2026-09-13 15:16:26 -04:00
1 parent 5f317ba8d2
commit 086007fbd4
12 files changed
+216 -166

No files matched your search

+5 -4
View File
@@ -1,5 +1,5 @@
-- DDS: дни для сборки сессий, от first_day до last_day включительно.
-- Пустой ответ означает пустой ODS; NULL в first_day — отсутствие работы.
-- Без событий ODS строк в ответе нет; NULL в first_day — дней для расчета нет.
--
-- position — номер следующего дня для генерации. Последний прожитый день
-- равен min(EventDate) + position - 1. В отличие от max(EventDate), эта
@@ -13,9 +13,10 @@
WITH
(SELECT min(EventDate) FROM ods.event_dist) AS first_source_day,
first_source_day + ({position:UInt16} - 1) AS last_lived_day,
-- Ищем первый день ODS, которого нет в DDS: максимум собранного дня
-- пропустил бы более ранний пробел. Частично заполненный день так не найти.
-- GLOBAL сравнивает со списком дней всего DDS, а не одного шарда.
-- Ищем первую дату событий ODS, за которую еще нет сессий DDS.
-- Поиск после max(session_date) пропустил бы более раннюю потерянную дату.
-- Если за день есть хотя бы одна сессия, он уже не считается пропущенным.
-- GLOBAL берет даты сессий со всех шардов.
-- minOrNull возвращает NULL, если пропусков нет.
(
SELECT minOrNull(day)