Вы описываете схему событий для purchase_succeeded. Как лучше хранить сумму покупки в свойствах события, чтобы избежать проблем качества данных при агрегациях?
AХранить
amount='1990 RUB' строкой с символом валюты: значение сразу читается человеком в отчётах и интерфейсахBХранить
amount='1 990' строкой с разделителями именно так, как сумма отображается пользователю в интерфейсе приложенияCХранить
amount_minor=1990 числом в минимальных единицах и currency='RUB' отдельным свойством для последующих агрегацийDХранить
amount=1990.0 числом с плавающей точкой и без отдельного поля валюты, а валюту определять по стране пользователяПравильный ответ. Для аналитики лучше хранить числовое поле и валюту отдельно, чтобы избежать парсинга и неоднозначностей в свойствах события.
Разбор
Суммы в событиях лучше хранить целым числом в минимальных единицах валюты (копейки, центы) и валюту класть отдельным полем. Это исключает ошибки округления float, упрощает агрегации SUM и фильтрацию по валюте, и не требует парсинга строк в ETL. Строковые форматы вроде '1990 RUB' или '1 990' ломают арифметические операции и зависят от локали. Хранение float без валюты вынуждает определять её по косвенным признакам, что приводит к ошибкам у мультивалютных пользователей.
Ещё вопросы по теме «Инструментация и качество данных»
- Вы проектируете схему событий для регистрации. Какой вариант сбора событий лучше всего подходит, чтобы считать конверсию в успешную регистрацию и понимать, через какой способ вошли?
- Вы хотите логировать применение фильтров в каталоге. Какой вариант лучше для таксономии событий и последующей аналитики?
- Вы настраиваете мониторинг качества данных для платёжного флоу. Какой набор проверок согласованности наиболее практичен и устойчив к сезонности?
- После обновления SDK сумма по `purchase_succeeded` выросла почти в 2 раза, но платёжный провайдер этого не подтверждает. Что наиболее вероятно и какое действие по качеству данных самое уместное?
- В мобильном приложении события могут копиться офлайн и отправляться позже. Какие поля времени лучше заложить в логирование, чтобы корректно строить путь пользователя и контролировать задержки?
- Все вопросы по «Инструментация и качество данных» →