Открывая новую главу «Шаблоны работы над ошибками», автор перефразирует Бенджамина Франклина:
«В мире данных ни в чем нельзя быть уверенным, за исключением ошибок и проблем с качеством данных.»
В сей главе обсуждаются такие частые случаи, как «необработанные записи», «опоздавшие данные» и даже «дубликаты».
Про «необработанные записи» они же «битые записи» - здесь.
«Опоздавшие данные» они же «долеты» - еще один интересный случай. Одним из вариантов решения является простой пересчет за нужные периоды. Например, каждый день витрина дособирается за последние сутки, в выходные пересчитываем за всю неделю, а в начале нового месяца - за предыдущий месяц. Если что-то произошло за этими пределами, то игнорируем.
Главный плюс такого решения - оно очень простое. Тем более, что, если «долеты» случаются каждый день, то и с логикой их определения и причинами возникновения заморачиваться не нужно. Зато, если их нет, то пересчет запускается впустую. Это статический вариант шаблона, период пересчета задается заранее и не изменяется в ходе выполнения задачи. Я всегда реализовывал именно такой вариант, даже не подозревая, что когда-нибудь прочитаю об этом в книге.
Динамический вариант подразумевает пересчет только тех периодов, которые содержат «долеты», но для этого их нужно сначала определить.
В реализации обоих варианта может помочь динамическое сопоставление задач - «фича», появившаяся в Apache Airflow версии 2.3, если мне память не изменяет. Рекомендую освоить, если еще не…
Продолжение следует…