Разработка таблиц фактов накопления времени - PullRequest
1 голос
/ 04 июня 2019

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

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

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

Извините за мой плохой английский.

1 Ответ

0 голосов
/ 22 июня 2019

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

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

| 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 для создания необходимого представления

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

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

...