Определение таблицы фактов накопительного снимка согласно Кимбаллу:
суммирует события измерения, происходящие с предсказуемыми шагами между началом и концом процесса.
Для этого конкретного случая использования я бы использовал Таблица фактов транзакции , поскольку события (шаги) непредсказуемы, это больше похоже на таблицу фактов событий, что-то похожее на журналы или аудиты.
| 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?
Дайте мне знать, если вы придумали что-то другое, так как я заинтересован в этом конкретном случае использования. Удачи