Хранилища данных,
OLAP, CRM: информация
 
 На главную | Книги | Ссылки | Рассылка | Письмо автору | RSS

Совет №50
Бесфактовая таблица фактов? Звучит как «китовая креветка»?

Материал опубликован с разрешения компании Ralph Kimball Associates
Автор оригинала: Bob Becker (все статьи)
Перевод на русский язык: Антон Задорожный
Оригинальный документ располагается здесь.

 

Бесфактовая таблица фактов кажется оксюмороном, как китовая креветка. Как у вас может быть таблица фактов, которая не содержит ни одного факта? Мы обсуждали основы бесфактовых таблиц фактов несколько раз в наших книгах и статьях. В этом совете разработчику мы используем бесфактовую таблицу фактов для дополнения наших стратегий медленно меняющихся измерений.

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

  • Выявление акций продвижения продукта (для определения продвигаемых продуктов которые не продаются)
  • Ведение посещаемости студентов или событий регистрации
  • Ведение страховых случаев
  • Определение перечней строений, услуг, оборудования для госпиталя или университета

За дополнительной информацией о бесфактовых таблицах фактов обратитесь к ранним статьям Ральфа What Didn’t Happen и Factless Fact Tables.

В сегодняшнем совете разработчику, представьте, что мы разрабатываем схему для крупной компании потребительского сектора (выберите вашу любимую потребительскую отрасль – авиаперевозки, страхование, кредитные карты, банковская, коммуникации или интернет-магазин). Компания ведет бизнес с десятками миллионов клиентов. В дополнение к типичным требованиям в виде транзакционной схемы для отслеживания поведения клиента и периодического снимка для определения тенденций, нашим бизнес-партнерам необходима возможность просмотреть точный профиль клиента (включающий десятки атрибутов) в любой момент времени. Постоянные читатели могут помнить рассуждения Ральфа о похожей ситуации в 13-ом совете. Он наметил технику, кода измерение само фиксирует события изменения профиля как медленно меняющееся измерение Тип 2 (SCD Type 2), вместо того чтобы создавать таблицу фактов для захвата транзакций по профилю. Как бы ни было, мы не сможем использовать технику совета №13 для текущего сценария, дающего большие объемы данных (миллионы клиентских строк) и потенциально высокую изменчивость (десятков атрибутов).

Давайте представим, что мы разрабатываем основное клиентское измерение (с атрибутами SCD Type 2 как минимум) вместе с четырьмя «мини» измерениями для ведения изменений кредитных атрибутов клиента, его предпочтений, маркетинговой сегментации/предрасположенностей и клиентской географии. Пять внешних ключей входят таблицу фактов уровня транзакции, так же как и в месячный снимок. Эти внешние ключи представляют «состояние» клиента, когда строка факта загружена. Пока все неплохо, но нам по-прежнему нужно поддерживать отображение профиля клиента в произвольный момент времени. Мы рассматриваем использование другой таблицы фактов периодического снимка, загружаемой ежедневно для каждого клиента, фиксирующая в момент времени связи между клиентским измерением и связанными мини-измерениями. Это приводит к загрузке десятков миллионов снимков каждую ночь, за несколько лет исторических данных. Мы быстро делаем расчеты и предпочитаем рассмотреть другие варианты.

В этот момент вы думаете: «Это отлично, но как насчет китовой креветки?». Мы можем использовать бесфактовую таблицу фактов для фиксации во времени связей между клиентским измерением и мини-измерениями. Мы загружаем строку факта в бесфактовую таблицу каждый раз, когда происходит изменение Типа 2 в базовом клиентском измерении или меняется связь между базовым измерением и мини-измерениями. Эта бесфактовая таблица фактов содержит внешние ключи к базовому клиентскому измерению и каждому из четырех мини-измерений для загруженной строки. Затем мы украсим эту конструкцию двумя датами, начала и окончания, для определения профиля клиента в произвольный момент времени. Мы также можем добавить простое измерение для обозначения текущего профиля клиента, в дополнение к измерению «причина изменения» для указания причины, приведшей к загрузке новой строки в бесфактовую таблицу фактов.

 

 

По этой теме можно также почитать:

 

Для удобства отслеживания новых публикаций на сайте рекомендую подписаться на рассылку или подписаться на канал RSS.

 

Если вы нашли в сети интересные ссылки на ресурсы по технологиям хранилищ данных, OLAP, CRM или data mining, и хотите поделиться ими с другими, присылайте их. Я с удовольствием размещу их на этом сайте.

Популярные страницы:

Советы разработчику хранилищ данных

OLAP

Моделирование

Книги

Книги на русском языке

Бесплатные книги

Производители OLAP

CRM

Производители CRM

Управление метаданными

Коллекция ссылок


[AD]

Найти: на

[ На главную | Книги | Ссылки | Рассылка | Письмо автору | Реклама на сайте ]

© Константин Лисянский, 2001-2008.

[AD] [AD] [AD]

Используются технологии uCoz