Какой санити-чек лучше всего подходит для поля валюты в событиях покупок с точки зрения инвариантов и качества данных?
AПроверять, что валюта строго равна
'RUB', и считать любое другое значение ошибкой данных независимо от контекстаBРазрешить любые значения валюты без проверки списка кодов: чем больше форматов, тем шире охват рынков в логах
CУдалить поле валюты совсем и хранить только сумму в минимальных единицах, договорившись о единой валюте платежа
DПроверять, что поле непустое и входит в список допустимых ISO-кодов; алертить на новые или неожиданные значения валюты
Правильный ответ. Инвариант для перечислимого поля должен проверять непустоту и допустимый набор значений, иначе ошибки будут скрыты.
Разбор
Санити-чек на поле валюты обычно опирается на whitelist: непустое значение из списка ISO 4217 кодов, поддерживаемых продуктом, и алерт на любое новое или неожиданное значение. Так ловятся опечатки, баги клиентов и расширение рынков, о которых аналитика ещё не знает. Жёстко фиксировать одну валюту нельзя — продукт может работать в нескольких регионах. Разрешать любые значения — открыть путь мусору. Удаление поля валюты ломает мультивалютные расчёты и привязывает данные к одному рынку без явного контракта.
Ещё вопросы по теме «Инструментация и качество данных»
- Вы проектируете схему событий для регистрации. Какой вариант сбора событий лучше всего подходит, чтобы считать конверсию в успешную регистрацию и понимать, через какой способ вошли?
- Вы хотите логировать применение фильтров в каталоге. Какой вариант лучше для таксономии событий и последующей аналитики?
- Вы настраиваете мониторинг качества данных для платёжного флоу. Какой набор проверок согласованности наиболее практичен и устойчив к сезонности?
- После обновления SDK сумма по `purchase_succeeded` выросла почти в 2 раза, но платёжный провайдер этого не подтверждает. Что наиболее вероятно и какое действие по качеству данных самое уместное?
- В мобильном приложении события могут копиться офлайн и отправляться позже. Какие поля времени лучше заложить в логирование, чтобы корректно строить путь пользователя и контролировать задержки?
- Все вопросы по «Инструментация и качество данных» →