- Зачем:
- трекер стенда был полным, и правило «деньги — по бэкенду» держалось
на слове; классы B и D делают недосчет и пересчет трекера
наблюдаемыми (этап 6, #184).
- Что:
- подпоток BEACONS: точечная потеря purchase (~3%) и сюжетный дубль
(~2%) швом после _purchases, с гарантией моста идентичностей и
условием допуска дубля по паузе до следующего визита;
- опись считает пять классов по приоритету спеки; фильтр
classes_vs_inventory расширен, нулевой класс читается нулем;
- fate.md, seeds.md, dm.md и orders/README.md приведены к имени
BEACONS и строгому правилу допуска.
- Проверка:
- make lint, make typecheck, make test (433 passed) и make inventory
из generator/ — хеши слепков не изменились;
- на стенде: make smoke, make check-clickhouse, make check-services
зеленые; в dq_summary classes_vs_inventory и sessions_vs_reference
pass, витрина сверки показывает lost_event и duplicate_event.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
804 B
SQL
24 lines
804 B
SQL
-- DQ: стендовая сторона технической растяжки от описи мира.
|
||
--
|
||
-- Эталонные счётчики читает Airflow из world-inventory.json: у настоящего
|
||
-- магазина такого оракула нет. Запрос возвращает только наблюдаемую сторону;
|
||
-- Python-задача сопоставляет ее с пятью счетчиками закрытого дня из описи.
|
||
SELECT
|
||
order_day AS data_date,
|
||
mismatch_class,
|
||
count() AS orders
|
||
FROM dm.purchase_vs_orders_v
|
||
WHERE mismatch_class IN (
|
||
'match',
|
||
'cancelled',
|
||
'lost_event',
|
||
'duplicate_event',
|
||
'amount_delta'
|
||
)
|
||
GROUP BY
|
||
data_date,
|
||
mismatch_class
|
||
ORDER BY
|
||
data_date,
|
||
mismatch_class
|