Перейти к содержанию

Аналитические системы

Требования применяются к разработке, тестированию и сборке аналитических моделей, витрин и запросов. Управление аналитической платформой и доступом пользователей находится вне области документа. Уровни обязательности определены в корневом 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 классификации изменения.

Исключения

Отклонение допустимо для внутренней непубликуемой модели, покрытой проверкой потребляющей модели.