Аналитические системы¶
Требования применяются к разработке, тестированию и сборке аналитических моделей,
витрин и запросов. Управление аналитической платформой и доступом пользователей
находится вне области документа. Уровни обязательности определены в корневом
README.md.
DATA-AN-001. Определение аналитической метрики¶
Уровень: MUST
Применяется к: каждой публикуемой метрике или dimension
Проект должен хранить версионируемое определение формулы, grain, единицы, timezone, окна, фильтров, источников и владельца. Одинаковое имя не должно использоваться для разных формул.
Обоснование¶
SQL с одинаковым названием может считать разные бизнес-величины.
Проверка¶
- schema или lint определения;
- review lineage до полей источника;
- golden test формулы.
Исключения¶
Одноразовый исследовательский запрос не является публикуемой метрикой и должен быть явно помечен как ненормативный.
DATA-AN-002. Grain и ключ результата¶
Уровень: MUST
Применяется к: аналитической модели или витрине
Модель должна объявлять grain и машинно проверяемый уникальный ключ либо явно указывать отсутствие уникальности. Join не должен неявно изменять grain или умножать строки.
Обоснование¶
Неявное изменение grain создаёт правдоподобные, но завышенные агрегаты.
Проверка¶
- uniqueness test ключа;
- тест cardinality каждого join;
- сверка числа строк до и после join.
Исключения¶
Многие-ко-многим допустимо с явно объявленной bridge-моделью и тестом формулы.
DATA-AN-003. Время и поздние данные¶
Уровень: MUST
Применяется к: модели, зависящей от времени
Контракт должен различать event time, ingestion time и processing time, зафиксировать timezone и определять обработку поздних и исправленных данных. Текущее время сборки не должно неявно изменять исторический результат.
Обоснование¶
Смешение времён изменяет метрику при повторном расчёте.
Проверка¶
- fixtures на границе timezone и периода;
- тест поздней записи и повторного расчёта;
- тест с зафиксированным clock.
Исключения¶
Моментный operational snapshot может использовать processing time, если это явно является grain модели.
DATA-AN-004. Null, неизвестное и нулевое значение¶
Уровень: MUST
Применяется к: измерению и агрегату
Модель должна различать отсутствие данных, неизвестную категорию и числовой ноль. Подстановка значения должна быть частью определения метрики и проверяться на исходном null, пустой строке и неизвестном enum.
Обоснование¶
Автоматическая подстановка нуля скрывает неполноту и меняет средние значения.
Проверка¶
- boundary fixtures для каждого состояния;
- schema tests nullability;
- golden test агрегата.
Исключения¶
Объединение состояний допустимо только при одинаковой объявленной семантике.
DATA-AN-005. Защита от регрессии модели¶
Уровень: SHOULD
Применяется к: изменению опубликованной модели или метрики
Для изменения формулы, grain или смысла поля CI следует выполнять schema diff, применимые data quality tests и сравнение результата на небольшом зафиксированном dataset. Полный representative dataset и отдельный golden test не требуются, если инвариант проверяется более узким детерминированным тестом.
Обоснование¶
Успешное выполнение запроса не выявляет изменение смысла результата.
Проверка¶
- сравнение небольшого fixture либо эквивалентный тест инварианта;
- тест schema и grain;
- review классификации изменения.
Исключения¶
Отклонение допустимо для внутренней непубликуемой модели, покрытой проверкой потребляющей модели.