Проектирование куба - PullRequest
       91

Проектирование куба

0 голосов
/ 17 февраля 2019

Меня попросили создать наш аналитический куб и задать вопрос о дизайне.

Мы продаем «виджеты» и «части», чтобы идти с этими виджетами.В каждом заказе есть много виджетов, а иногда и несколько частей.

То, на чем я застрял, - для меня заказ - это факт в какой-то мере.Но каковы виджеты?Являются ли они измерением, и каждый факт в мере будет записью для каждой части и виджета для заказа.

Таким образом, если в заказе 123 были виджет 1, а также виджет 2 и часть 5, то будет 3 факта.в меру для того же порядка?Это правильно?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вероятно, это то же самое, что и в предыдущем ответе, но ....

Если вы попытаетесь смоделировать «много виджетов на заказ», у вас будут проблемы, потому что вы получите много (порядокфакт) ко многим (виджетам) отношение.При проектировании схемы куб / звезда отношения многих ко многим обычно необходимо каким-то образом преобразовать в отношения один ко многим.

Итак, вы пытаетесь определить, какая особая вещь обозначает «порядок» (в противоположность куче виджетов в порядке).Обычно это просто такие вещи, как дата заказа, клиент, номер заказа, налог

Примерный способ моделирования:

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

Затем вам нужно решить, как распределить сумму налога на заголовок заказа на пять записей.Два очевидных решения:

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

Моделирование «деталей» просто развивает эти концепции.

Важно понимать, что конечный пользователь хочет видеть, почему он хочет видеть детали.Что они хотят измерить по частям, как назначить значения более высокого уровня (например, налога) более низким уровням, например, частям.

0 голосов
/ 17 февраля 2019

На базовом уровне вы можете считать большинство фактов транзакциями или позициями транзакций.Так, например, у вас может быть таблица фактов «продажи», в которой каждая запись представляет одну позицию из этой продажи.Каждая запись факта будет иметь числовые столбцы, представляющие метрики, и другие столбцы, соединяющиеся с таблицами измерений.Комбинация этих измерений будет описывать эту позицию.Таким образом, в вашем случае вы, вероятно, имеете что-то вроде: 1) измерение «дата», детализирующее дату транзакции 2) измерение «виджет», детализирующее виджет, проданный в этой транзакции 3) измерение «клиент», детализирующее клиента, которыйкупил этот товар (почти наверняка один и тот же клиент появится в каждой позиции для этой транзакции) 4) ... определяется тем, какую информацию вы имеете и какую бизнес-проблему вы пытаетесь решить.

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

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

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

...