Схема звезды [факт 1: n измерение] ... как? - PullRequest
4 голосов
/ 07 мая 2010

Я новичок в хранилищах данных, и у меня, как я надеюсь, есть простой вопрос о построении звездной схемы:

Если у меня есть таблица фактов, в которой запись факта, естественно, имеет отношение «один ко многим» с одним измерением, как можно смоделировать схему типа «звезда» для поддержки этого? Например:

  • Таблица фактов: вход в пункт продажи ( измерение в долларах США
  • Таблица размеров: Акции (эти действуют рекламные акции, когда продажа была совершена)

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

Как мне это сделать?

Ответы [ 3 ]

8 голосов
/ 03 декабря 2012

Для случаев, когда у вас действительно есть «многозначное» измерение, таблица мостов обычно является решением, которое рекомендует Кимбалл.

Ваше измерение "Продвижение" - это просто запись каждой акции с ее атрибутами (дата начала, дата окончания, код купона, POS-код акции, название объявления и т. Д.).Отношение промо-акции к продукту здесь не моделируется, так как оно будет отражено в таблице фактов.

Размер промо-акции / скидки будет выглядеть (1 строка на уникальное запланированное продвижение)

Promotion Dim ID
Promo Code
Coupon Code
Promo Start DTTM
Promo End DTTM
... etc ...

Ваш факт продаж будет выглядеть следующим образом:

Tran Date
Tran Line #
Customer Dim ID
Product Dim ID
Promotion Group Dim ID
Net Sale Price
Average Cost
Discount Amount

Ваша таблица моста "Группа продвижения" будет представлять собой набор комбинаций:

Promotion Group Dim ID
Promotion Dim ID

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

Обратите внимание, что с помощью таблицы Bridge вы можете легко удвоить счет продаж, поэтому я советую, чтобы отчеты, использующие этот метод, разрабатывались людьми, которые понимаютмодель.

1 голос
/ 07 мая 2010

Время - почти всегда измерение в схеме звезды.

«В действительности» предполагает наличие даты начала и окончания Акции.

Таким образом, Акция сама по себе может быть фактом, имеющим ссылку на дату начала и окончания для измерения Времени.

Может быть, с такой моделью вы могли бы иметь таблицу JOIN, чтобы соотносить продажи с рекламой многими фактами.

Акции «много-много» - да, но насколько они велики? Один в день означает 365 записей в год. Я предполагаю, что Акции каким-то образом связаны с продуктами или категориями. Продажа будет иметь метку времени и несколько продуктов.

Вы должны хранить их где-нибудь, когда-нибудь, или ваша модель развалится. Почему нежелание моделировать раскрутку таким образом?

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

0 голосов
/ 07 мая 2010

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

Главное здесь - не беспокоиться о дублировании данных.Подумайте о хранилище данных, ориентированном на продажи, скажем, о компании быстрого питания.Можно предположить, что не будет только одной записи факта за 4,13 долл. США, которая используется для представления миллиона различных продаж «ценного блюда № 3».Вместо этого каждая запись в измерении «Транзакция» будет иметь связь как минимум с одной конкретной записью факта в этой гипотетической таблице фактов продаж.

...