deшка
Урок 6.5

Типы таблиц фактов

События, периодические и накапливающиеся снимки; аддитивность мер и разница между нулём и отсутствием записи.

Таблица фактов хранит наблюдения процесса на выбранном зерне: операцию, остаток на дату, переход заявки или участие в событии. Тип таблицы выбирают по вопросу отчёта.

Транзакционный факт: одно событие

Одна строка представляет отдельное событие: выполненную операцию, посещение сайта или изменение статуса. Такие факты удобны для подсчёта числа событий и анализа их последовательности. У события обычно есть идентификатор и время, а числовая мера бывает не всегда.

Если один объект порождает несколько событий, нельзя считать его код ключом события. Например, одна заявка может проходить несколько этапов. Ключом строки журнала будет идентификатор перехода либо сочетание заявки и номера перехода. Иначе часть истории потеряется или повторные события смешаются.

Периодический снимок: состояние на дату

Одна строка описывает состояние на регулярной границе, например остаток товара на складе на конец дня.

ДеньСкладОстаток, шт.
1 сентябряA8
1 сентябряB12
2 сентябряA9
2 сентябряB11

На конец каждого дня остаток двух складов равен 20. Сумма всех четырёх строк 40 не означает, что было 40 товаров. Остаток можно складывать по независимым складам в один момент, но нельзя трактовать сумму по датам как остаток. Такую меру называют полуаддитивной.

Если снимки сделаны в разные часы, даже сумма по складам может неверно описывать общий момент. У периодического факта должны быть ясная временная граница и ожидаемое покрытие: какие объекты обязаны присутствовать в каждом снимке.

Накапливающийся снимок: один процесс целиком

Одна строка описывает экземпляр процесса и по мере его развития получает даты этапов. Например, заявка имеет дату создания, принятия в работу, решения и закрытия. По такой таблице удобно измерять время между этапами и находить незавершённые заявки.

Если процесс возвращается на предыдущий этап, единственная колонка с датой каждого этапа уже не хранит все переходы. Рядом нужен журнал событий. Пустая дата закрытия означает, что заявка ещё не закрыта; подставлять сегодняшнюю дату в колонку нельзя. Возраст открытой заявки вычисляют отдельно.

Факт без числовой меры

Иногда достаточно самой записи «сотрудник присутствовал на занятии». Это factless fact: событие есть, а суммы или длительности в строке нет. COUNT посчитает присутствия. Но поиск отсутствий требует знать и ожидаемый набор: кто должен был прийти. Отсутствие строки в журнале само по себе не доказывает, что событие должно было произойти.

Какие меры можно складывать

МераЧто допустимо
Сумма отдельной операции в одной валютеСкладывать непересекающиеся операции по нужным разрезам
Остаток на датуСкладывать по объектам в один момент, но не по времени как «общий остаток»
Средняя длительностьОбъединять через общую длительность и количество, не через среднее средних
Доля успешных операцийОбъединять через число успехов и число всех подходящих операций
Уникальные пользователиНе складывать количества по пересекающимся множествам

Например, в одной группе две операции со средней длительностью 10 минут, в другой — восемь со средней 30 минут. Среднее двух средних равно 20, а среднее по всем десяти операциям — 26. Поэтому при подготовке агрегата полезно сохранять сумму и количество, а среднее вычислять на нужном уровне.

Роль таблицы важнее формы колонок

Факт хранит наблюдение или состояние; измерение даёт контекст для фильтрации и группировки. Числовая вместимость аудитории может быть атрибутом измерения, а запись участия — фактом без меры. Историчность рассматривают отдельно: версии бывают у измерений, снимки и исправления — у фактов.

Роль таблицы устанавливают по смыслу строки, правилам появления записей и вопросам потребителей. Ссылки, даты и числовые колонки помогают ориентироваться, но таблица с id, датой и суммой может быть операционной, снимком или агрегатом.

Повторяющиеся описания обычно выносят в измерение, чтобы управлять их изменениями в одном месте. Код события, номер документа и текст самого наблюдения могут принадлежать зерну факта. Выбор проверяют по роли поля и запросам.

Ноль и отсутствие строки

В снимке остаток 0 означает, что объект проверен и его запас равен нулю. Отсутствие строки может означать пропущенную загрузку, закрытый объект или то, что он ещё не существовал. Если автоматически заменить всё отсутствующее нулём, технический сбой превратится в ложный бизнес-результат.

Опишите ожидаемое покрытие: какие склады и даты должны присутствовать, как учитывать открытие и закрытие складов. Отдельно отмечайте «неизвестно», «не применимо» и «подтверждённый ноль».

Один процесс — несколько полезных фактов

Для процесса заявки транзакционный журнал отвечает, сколько переходов произошло и в каком порядке. Периодический снимок показывает число открытых заявок на конец дня. Накапливающийся снимок позволяет измерить путь каждой заявки от создания до закрытия. Эти таблицы могут строиться из одних исходных событий, но имеют разное зерно и не заменяют друг друга.

Войти, чтобы отмечатьдальше →
6.6 →SCD: история изменений измерений