Промежуток времени для создания таблиц фактов

Мне нужно разработать звездообразную схему для обработки заказов. Ход выполнения заказа выглядит так:

  • Клиент C размещает заказ на товар I в количестве 100
  • Фабрика F1 частично принимает заказ в количестве 30 штук.
  • Фабрика F2 принимает заказ частично с количеством 20
  • Купить на рынке 50 шт.
  • Доставка F1 20 шт.
  • Доставка F1 7 шт.
  • F1 отменить контракт (нам нужно купить еще 3 предмета на рынке)
  • Доставка F2 20 шт.
  • Купить на рынке 3 предмета
  • Завершить заказ

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

Я извиняюсь за мой плохой английский.


person Phạm Văn Thông    schedule 04.06.2019    source источник
comment
Можем ли мы прояснить, нужно ли вам разработать целую звездную схему или просто таблицу фактов. Потому что сценарий, который вы упомянули, - вся схема звезды может быть рассчитана на одно и то же.   -  person Shiwangini    schedule 17.06.2020


Ответы (1)


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

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

| order_key | date_key | full_datetime       | entity_key (customer, factory, etc. varchar) | entity_type | state    | quantity |
|-----------|----------|---------------------|----------------------------------------------|-------------|----------|----------|
| 1         | 20190602 | 2019-06-02 04:30:00 | C1                                           | customer    | request  | 100      |
| 1         | 20190602 | 2019-06-02 05:30:00 | F1                                           | factory     | receive  | 30       |
| 1         | 20190602 | 2019-06-02 05:30:00 | F2                                           | factory     | receive  | 20       |
| 1         | 20190602 | 2019-06-02 05:40:00 | Company?                                     | company     | buy      | 50       |
| 1         | 20190603 | 2019-06-03 06:40:00 | F1                                           | factory     | deliver  | 20       |
| 1         | 20190603 | 2019-06-03 02:40:00 | F1                                           | factory     | deliver  | 7        |
| 1         | 20190603 | 2019-06-03 04:40:00 | F1                                           | factory     | deliver  | 3        |
| 1         | 20190603 | 2019-06-03 06:40:00 | F1                                           | factory     | cancel   |          |
| 1         | 20190604 | 2019-06-04 07:40:00 | F2                                           | factory     | deliver  | 20       |
| 1         | 20190604 | 2019-06-04 07:40:00 | Company?                                     | company     | buy      | 3        |
| 1         | 20190604 | 2019-06-04 09:40:00 | Company?                                     | company     | complete | 100      |

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

динамический запрос PIVOT SQL Server?

Дайте мне знать, если вы придумали что-то другое, так как меня интересует этот конкретный вариант использования. Удачи

person dim_user    schedule 22.06.2019