Многомерная модель «многие ко многим» - PullRequest
1 голос
/ 06 января 2010

Люди,

У меня есть таблица измерений DIM_FILE, в которой хранится информация о файлах, которые мы получили от клиентов. Каждый файл имеет подробные записи, которые составляют мою таблицу FACT, CUST_DETAIL. В основном процессе файл проходит несколько этапов, и каждый этап присваивает ему статус. Короче говоря, у меня отношения многие ко многим. Любые идеи вокруг звездной схемы размерного моделирования. Запись клиента принадлежит только одному файлу, и файл может иметь несколько статусов.

FACT
----
CustID
FileID
AmountDue


DIM_FILE
--------
FileID
FileName
DateReceived

FILE_STATUS
-----------
FileID
StatusDateTime
StatusCode

1 Ответ

2 голосов
/ 07 января 2010

Есть несколько вещей, которые вы можете сделать, чтобы объединить это с размерной моделью / звездой:

  1. Постройте две звезды (возможно, они окажутся в разных датамарках). Один из них имеет FACT в качестве таблицы фактов, а другая звезда имеет FILE_STATUS в качестве факта (вы можете рассматривать его как детализированную таблицу транзакций). Чтобы это работало, я бы, вероятно, денормализовал и добавил бы CustId к FILE_STATUS
  2. Поскольку вы имеете дело с FILE_STATUS, вы можете превратить FACT в таблицу фактов накапливающего снимка . В этой модели у вас будет отдельный набор дополнительных столбцов в FACT для записи всей информации, относящейся к каждому переходу статуса. По крайней мере, у вас будет столбец для измерения даты / времени, чтобы записывать, когда был достигнут определенный статус. В вашем ETL вам нужно ОБНОВИТЬ таблицу фактов, чтобы записать, как файл проходит через состояния. Этот дизайн работает только в том случае, если количество состояний конечно и относительно мало. Кроме того, должен быть более или менее четкий путь изменения статуса (например, при заказе клиента: получено -> выбрано -> упаковано -> отправлено -> оплачено)
  3. Создайте так называемое многозначное измерение для состояний: FACT получит ключ к этому новому измерению, и это новое измерение фактически представит коллекцию состояний, которые применяются к строке в таблице FACT.
  4. У вас может быть таблица для бриджа (хотя я не думаю, что это относится к этой теме, не уверен)

Ссылки:

Накопительный снимок: http://www.kimballgroup.com/2002/06/design-tip-37-modeling-a-pipeline-with-an-accumulating-snapshot/ многозначное измерение в сравнении с таблицей мостов: http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/multivalued-dimension-bridge-table/

...