docs(warehouse): объяснены расчет строк и замена дневных разделов
Зачем: выражения «собираются в донор» и «публикуются дни» требовали знать устройство конвейера до чтения объяснения. Что: описаны назначение промежуточных таблиц и последовательность расчета, записи и замены разделов. Перечитаны остальные объяснения: выбор дней, разворачивание позиций заказа, проверка сессий и повтор запуска. Проверка: make lint, git diff --check, локальные ссылки и якоря. SQL без комментариев и AST обоих дагов без строк документации не изменились. Refs: #249
This commit is contained in:
1 parent
5f317ba8d2
commit
086007fbd4
12 files changed
+216
-166
No files matched your search
+12
-8
@@ -1,9 +1,12 @@
|
||||
"""Трансформации слоя DM: сборка стендовых витрин.
|
||||
|
||||
Выручка наследует ритм заказов. Сверка соединяет окно заказов с прожитым
|
||||
хвостом событий. Обе заменяют дневные партиции. Трафик наследует
|
||||
ретроспективность карты идентичностей и пересчитывает всю историю новой
|
||||
версией. Объем каждого прогона выводится из состояния слоев.
|
||||
Даты для расчета выручки берутся из последнего слепка заказов и списка
|
||||
пропущенных дней. Сверка покупок с заказами учитывает также прожитые дни
|
||||
событий и дни, где заказ еще не найден. Запросы записывают результаты
|
||||
в промежуточные таблицы, затем заменяют дневные разделы основных таблиц.
|
||||
|
||||
Трафик пересчитывается за всю историю: новая связь посетителя с пользователем
|
||||
магазина меняет число известных пользователей и за прошлые дни.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -62,10 +65,11 @@ def _days(first_day: datetime.date, last_day: datetime.date) -> list[str]:
|
||||
|
||||
@task
|
||||
def replacements(scope: dict[str, object]) -> list[dict[str, object]]:
|
||||
"""Разложить дни в аргументы размноженной задачи замены.
|
||||
"""Подготовить параметры отдельной задачи replace для каждого дня.
|
||||
|
||||
Отдельный словарь нужен каждому экземпляру ``expand_kwargs``; тот же
|
||||
прием разобран в ``dds_transform.py`` на замене партиций заказов.
|
||||
expand_kwargs получает список словарей и создает по одному экземпляру
|
||||
задачи на каждый словарь. Дата подставляется в SQL шаблоном Jinja:
|
||||
параметр ClickHouse в ALTER ... PARTITION здесь не поддерживается.
|
||||
"""
|
||||
return [{"params": {"day": day}} for day in scope["days"]]
|
||||
|
||||
@@ -141,7 +145,7 @@ def dm_transform():
|
||||
|
||||
@task_group(group_id="purchase_vs_orders")
|
||||
def purchase_vs_orders():
|
||||
"""Сверка: окно заказов, прожитый хвост и предварительные дни."""
|
||||
"""Сверка: изменяемые заказы, прожитые покупки и дни ожидания заказа."""
|
||||
|
||||
@task
|
||||
def scope() -> dict[str, object]:
|
||||
|
||||
Reference in new issue
Block a user