Как смоделировать более одного продукта в классической схеме «звезда»?

#modeling

#моделирование

Вопрос:

Я создаю классическую звездообразную схему в хранилище данных для отчетности.

Моя мера — это данные (МБ) на номер телефона в месяц.

Мои измерения — это время, продукт, клиент и поставщик.

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

Есть идеи о том, как реализовать это в классической схеме «звезда»?

Добавление этих столбцов в мою таблицу фактов?

  • PRODUCT_1_FK
  • PRODUCT_2_FK
  • PRODUCT_3_FK

С уважением,

Кристиан

Комментарии:

1. Вы должны строго различать подписку на продукт и использование продукта . Первый вариант более или менее тривиален, и с несколькими продуктами проблем нет, поскольку вы находитесь на уровне клиента . Последнее является более сложным; типичный обходной путь — выбрать какой-либо основной продукт и добавить его в таблицу фактов или, если это невозможно, просто отключить его и позволить запросам создавать свою собственную картину, комбинируя таблицы использования и подписки . По сути, вам нужно воспроизвести логику процесса выставления счетов, где обычно для каждого использования выбирается только один продукт для оценки .

2. Как вы вычисляете показатель данных (МБ)?

3. Представьте, что клиент покупал 20 продуктов в месяц? Очевидно, что у вас нет фиксированного количества столбцов, которые вам нужны, чтобы затем денормализовать его, создав отдельную запись в вашей таблице фактов для каждой транзакции

Ответ №1:

Давайте представим этот сценарий :

  • Клиент с ID = 101 купил продукт с ID = 100 по телефону 25 января 2021 года
  • Тот же клиент с ID = 101 купил другой продукт с ID = 120 по телефону 28 января 2021 года

Как будет выглядеть ваша таблица фактов?

 CustomerSK ProductSK SupplierSK TimeSK
101        100       122        25-01-2021 09:00:30
101        120       189        28-01-2021 16:08:11
 

введите описание изображения здесь

Комментарии:

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

2. @ChristianHoffmann Как вы вычисляете показатель данных (МБ)?

Ответ №2:

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

Если вы хотите, чтобы масштаб вашей меры составлял «Данные (МБ) на продукт на номер телефона в месяц», тогда вам нужно будет добавить продукт к вашему факту, и у вас будет 1 запись факта на продукт