feat(dds): добавлена модель заказа и пересборка окна заменой партиций
Зачем: - Дать слою первую физическую сущность и показать идемпотентность, устроенную иначе, чем в приёме: заменой партиции, а не колонкой версии. - Родить механику дневной пересборки на кластере — образец для сессий и витрин. Что: - Добавлены dds.order_rep/_dist, двойник-донор dds.order_stage_rep/_dist и публичный договор dds.order_v с разбором позиций в три массива. - Добавлены запросы объёма прогона, сборки в двойник и замены партиции по дню. - Добавлен даг dds_transform: группа задач order, замена — размноженной задачей. - Окно изменяемости K пришло на сторону стенда якорем compose; владелец числа остаётся у генератора. - Объём считается от позднейшего дня заказа и первого недостающего дня: ярлыки доставки ODS для этого непригодны, а максимум собранного дня прячет дыры. - Записано, чего конвейер о себе не знает, и адресовано контуру DQ. Проверка: - make lint - make smoke, make check-clickhouse, make check-services - Прогон по стартовому миру: 1917 заказов, счёт равен ods.order_v, каждый заказ на шарде своего cityHash64(order_id), сумма позиций равна items_total. - Повтор без нового слепка: содержимое то же, _load_id новый; после слепка пересобрано окно, день за окном не тронут. - Снесённая руками партиция 2026-06-01 восстановлена побайтово. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
96829718f9
commit
1e8b83ffbb
9 files changed
+555
-6
No files matched your search
@@ -65,3 +65,37 @@ SELECT
|
||||
productQuantity AS product_quantity,
|
||||
productEventType AS product_event_type
|
||||
FROM ods.event_v;
|
||||
|
||||
-- DDS: публичный договор заказа на языке бизнес-модели.
|
||||
--
|
||||
-- В отличие от события, у заказа под представлением лежит физическая модель:
|
||||
-- разбор позиций и пересчёт пояса стоят денег, и платить их при каждом чтении
|
||||
-- значило бы собирать модель заново на лету (docs/architecture/dds/order.md,
|
||||
-- «Отклонённые варианты»). Представление здесь ничего не вычисляет — оно
|
||||
-- только называет колонки, которые слой обещает читателю.
|
||||
--
|
||||
-- FINAL нет и не будет: строка на заказ одна по построению, повтор гасит
|
||||
-- замена партиции, а не колонка версии.
|
||||
--
|
||||
-- Служебные колонки перечислены наравне с деловыми — это координаты
|
||||
-- собственной загрузки слоя, и расследование происшествия начинается с них:
|
||||
-- по _load_id видно, какой запуск собрал день.
|
||||
CREATE VIEW IF NOT EXISTS dds.order_v ON CLUSTER clickstream_cluster
|
||||
AS
|
||||
SELECT
|
||||
order_id,
|
||||
user_id,
|
||||
status,
|
||||
order_date,
|
||||
created_at,
|
||||
updated_at,
|
||||
items_total,
|
||||
discount,
|
||||
delivery,
|
||||
total,
|
||||
item_sku,
|
||||
item_quantity,
|
||||
item_price,
|
||||
_load_id,
|
||||
_load_ts
|
||||
FROM dds.order_dist;
|
||||
Reference in new issue
Block a user