feat(dm): добавлена сверка покупок с заказами
- Зачем: - показать расхождения трекера и бэкенда на зерне заказа - сохранить отложенные покупки наблюдаемыми до следующего слепка - Что: - добавлены таблицы, представление и пересборка purchase_vs_orders - сумма покупки нормализована в Decimal на границе ODS - обновлены договоры и указатели на механику пересборки - Проверка: - `make config-test`, `make lint` - `cd generator && make docs lint typecheck test` - `make rebuild-storage`, явные `dds_transform` и `dm_transform` - `make smoke`, `make check-clickhouse`, `make check-services`
This commit is contained in:
1 parent
fb00bbe4c3
commit
20071c565f
15 files changed
+391
-38
No files matched your search
@@ -12,12 +12,12 @@
|
||||
|
||||
- `name` — имя источника, как в облачной выгрузке Метрики; сырой слой хранит
|
||||
его без изменений.
|
||||
- `clickhouse_type` — тип в хранилище ровно в той записи, в какой его вернёт
|
||||
`system.columns`: параметры входят в имя типа целиком, без сокращений
|
||||
(`LowCardinality(String)`, `Array(Float64)`). Сверено 2026-08-01 —
|
||||
по документации ClickHouse через Context7 и запросом к узлу стенда
|
||||
(26.3.17.56). Запись важна потому, что по ней человек пишет DDL: тип,
|
||||
сокращённый здесь, приедет в таблицу сокращённым же.
|
||||
- `clickhouse_type` — тип колонки у источника в той записи, которой пользуется
|
||||
ClickHouse: параметры входят в имя целиком, без сокращений
|
||||
(`LowCardinality(String)`, `Array(Float64)`). Обычно ODS берет его без
|
||||
изменений. Исключение одно: денежный `purchaseRevenue` приезжает как
|
||||
Float64, а на границе хранения разбирается прямо в Decimal. Поэтому поле
|
||||
описывает выгрузку, а локальный тип ODS назван в документации хранилища.
|
||||
- `numpy_dtype` — чем колонка представлена внутри генератора; у массивов это
|
||||
тип элемента. Строки живут в `object`-массивах: numpy-строки фиксированной
|
||||
длины стенду ничего не дают.
|
||||
@@ -371,8 +371,8 @@ COLUMNS: tuple[Column, ...] = (
|
||||
numpy_dtype="float64",
|
||||
normalized_name="purchase_revenue",
|
||||
group=ColumnGroup.ECOMMERCE,
|
||||
comment="выручка заказа глазами клиента; Float64, как у Метрики —"
|
||||
" на этом держится урок о расхождениях с бэкендом",
|
||||
comment="выручка заказа глазами клиента; источник объявляет Float64,"
|
||||
" ODS хранит точный Decimal",
|
||||
),
|
||||
Column(
|
||||
name="purchaseCurrency",
|
||||
|
||||
@@ -27,10 +27,12 @@ PREAMBLE = """# Описание выгрузки: событие кликстр
|
||||
по элементу на товар. Отдельной сущности «визит» в выгрузке нет — визиты
|
||||
собирают на стороне хранилища, а `VisitID` дан как эталон для самопроверки.
|
||||
|
||||
Имена и типы колонок — стороны источника. Хранилище принимает их как есть и
|
||||
нормализует у себя: то же имя в нашем стиле ждёт в столбце «Нормализованное
|
||||
имя». Это имя источника, приведённое к snake_case, а не имя атрибута в
|
||||
модели данных: слой DDS складывает свою модель и называет атрибуты по ней.
|
||||
Имена и типы колонок описывают сторону источника. Обычно ODS принимает их без
|
||||
изменений. Исключение — `purchaseRevenue`: источник объявляет Float64, а ODS
|
||||
хранит деньги в Decimal. Точный локальный тип назван в документации
|
||||
хранилища. Имя в нашем стиле ждет в столбце «Нормализованное имя». Это имя
|
||||
источника, приведенное к snake_case, а не имя атрибута в модели данных: слой
|
||||
DDS складывает свою модель и называет атрибуты по ней.
|
||||
Столбец «Тип numpy» показывает, чем колонка представлена внутри генератора;
|
||||
у массивов это тип элемента. Номер — место колонки в выгрузке: порядок задан
|
||||
контрактом.
|
||||
|
||||
Reference in new issue
Block a user