теория
В десятом модуле мы строили эволюцию схем внутри «Ярмарки»: реестр, правило «только добавляй», проверка совместимости на CI. Внешний мир устроен проще: никакого реестра нет, а схема меняется, когда поставщику вздумается.
Статистическое ведомство переименовывает колонку. Биржа меняет разделитель. Министерство перевыкладывает файл за прошлый месяц — с теми же именами, но в других единицах: были тысячи тонн, стали миллионы рублей. Ни один из них не пришлёт release notes: у бюллетеня сотни потребителей, и все они узнают о переменах одинаково — сломавшись.
Это — эволюция схем, вид со стороны бесправного потребителя. Договориться нельзя; можно только выстроить свою сторону границы:
Терпимый читатель — но не легковерный. из десятого модуля берёт из файла только нужные поля и не падает от новых колонок. Но терпимость к форме не означает доверия к содержанию: каждое значение проходит проверку на правдоподобие. Ставка в 800% годовых, цена со знаком минус, дата из будущего — это не «данные пришли», это «что-то сломалось у них или у нас».
Карантин вместо тишины и вместо остановки. Подозрительный файл не попадает в витрины молча — и не роняет весь конвейер. Он уходит в : ряд помечается «данные задержаны», человек смотрит, правило пополняется. Семьдесят четыре источника гарантируют: что-нибудь ломается каждую неделю, и стоп-линия всего конвейера из-за одного экселя — роскошь, которую расписание публикаций не простит.
Разные частоты — не выравнивать на входе. Валюта приходит ежедневно, инфляция — ежемесячно, ВВП — ежеквартально. Соблазн «дозаполнить» месячный ряд до дневного интерполяцией — это выдумывание данных, которых никто не публиковал. Храним каждый ряд в его родной частоте; выравнивание — забота витрин и моделей, и делается оно явно, с подписью метода.
Граница с миром, которым не управляешь, строится из трёх слоёв: терпимость к форме, недоверие к содержанию, карантин для сомнений.