Любая таблица измерения с богатым набором описательных атрибутов часто становится непосредственным объектом запросов, независимо от таблиц фактов. Например, мы ежедневно выполняем различные запросы к таблице Клиент для ответов на вопросы, сколько у нас клиентов по типу платежа, региону, полу, тарифному плану. Простой подсчёт записей в статическом измерении достаточно очевиден, однако наша жизнь становится значительно интереснее, когда мы пытаемся выполнить тот же самый подсчёт, но уже в медленно изменяющемся измерении.
Подсчёт элементов медленно изменяющегося измерения
Проблема состоит в том, чтобы не насчитать больше, чем есть. В таблице медленно изменяющегося измерения (SCD) “Клиент” у нас будет несколько записей для каждого клиента, поэтому простой запрос на подсчёт количества клиентов в определённом регионе возвратит завышенное количество для всех клиентов, данные о которых изменялись (и, соответственно, имеется несколько записей). Кто-то, возможно, склонится к тому, чтобы выполнить подсчёт путём операции COUNT DISTINCT над ключами, уникально идентифицирующими клиентов в оперативной системе, если они доступны. Здесь проблема заключается в том, что если атрибут, по которому вы проводите подсчёт уникальных значений, изменился, как в случае изменения статуса клиента, вы всё же рискуете сделать ошибку, поскольку ключ клиента может быть уникальным в пределах штата. Нам нужен способ ограничения медленно изменяющегося измерения до одной записи на каждого клиента. Мы можем это сделать, если наиболее свежая запись для каждого клиента в таблице измерения будет содержать признак “текущая запись”. Это позволит нам выполнять подсчёт наиболее актуальных состояний клиентов. Вы даже можете создать отдельную таблицу, представление или предопределённый запрос, который будет возвращать записи о клиентах, имеющие только статус “текущая запись”, что позволит их корректно подсчитывать.
Читать дальше »
Опубликовано 15.04.2008 | Автор сообщения Константин Лисянский | Категории: DWH, Thornthwaite, Warren, Для начинающих, Для продвинутых, На русском, Проектирование многомерных моделей, Разработчик моделей данных, Разработчик приложений BI, Советы разработчику ХД