Какой санити-чек лучше всего подходит для свойства currency в событиях покупок с точки зрения invariants и data quality?

AПроверять, что currency всегда равно 'RUB', иначе это ошибка данных.
BРазрешить любые значения currency, чтобы logging никогда не ломался.
CУдалить currency и хранить только amount_minor.
DПроверять, что currency не пустое и входит в список допустимых кодов; алертить на новые или неожиданные значения.
Правильный ответ. Инвариант для перечислимого поля должен проверять не пустоту и допустимый набор значений, иначе ошибки будут скрыты.

Разбор

Жёстко фиксировать одну валюту нельзя, если продукт международный или планы могут измениться. Разрешать любые значения тоже опасно: опечатки и разные форматы начнут «размножаться» и ломать отчёты. Проверка допустимых кодов даёт ранний сигнал о баге instrumentation или о новом бизнес-кейсе, который нужно поддержать. Это простой, но очень эффективный контроль data quality.

Проверь себя · 1/3разбор после ответа
В мобильном приложении события могут копиться офлайн и отправляться позже. Какие поля времени лучше заложить в logging, чтобы корректно строить user journey и контролировать задержки?
Тренировать продукт в Telegram

Ещё вопросы по теме «Инструментация и качество данных»