在 OLAP 多维数据集中存储不同时间间隔的最佳实践
Best practice to store diverse time intervals in OLAP cube
我的任务是制作“OLAP 立方体”,按时间间隔聚合
因此,据推测,事实 table 将存储聚合:
- 每天
- 每个月根据其天数记录
- 每年根据月份记录
它看起来像这样:
|------------------------------------------|
| id | day | month | year | total_sales |
|------------------------------------------|
| 1 | 1 | 1 | 2020 | 10 |
| 2 | 2 | 1 | 2020 | 10 |
| ...N | ...N | ...N | 2020 | 10 |
| 32 | null | 1 | 2020 | 310 | # total for Jan 2020
| ...N | null | ...N | 2020 | 300 |
| 378 | null | null | 2020 | 3600 | # total for 2020
|------------------------------------------|
那么,总的来说这是一个好的计划吗?
将日、月、年作为一个独立的维度更好,还是无所谓?
在大多数情况下,将不同粒度的事实混合在一个事实中并不是一个好主意table。如果你真的需要存储每日、每月和每年的数据,请考虑不止一个事实table。
您还可以使用每天一行的维度 table 以及有助于聚合的各种属性,例如会计年度。
我的任务是制作“OLAP 立方体”,按时间间隔聚合
因此,据推测,事实 table 将存储聚合:
- 每天
- 每个月根据其天数记录
- 每年根据月份记录
它看起来像这样:
|------------------------------------------|
| id | day | month | year | total_sales |
|------------------------------------------|
| 1 | 1 | 1 | 2020 | 10 |
| 2 | 2 | 1 | 2020 | 10 |
| ...N | ...N | ...N | 2020 | 10 |
| 32 | null | 1 | 2020 | 310 | # total for Jan 2020
| ...N | null | ...N | 2020 | 300 |
| 378 | null | null | 2020 | 3600 | # total for 2020
|------------------------------------------|
那么,总的来说这是一个好的计划吗?
将日、月、年作为一个独立的维度更好,还是无所谓?
在大多数情况下,将不同粒度的事实混合在一个事实中并不是一个好主意table。如果你真的需要存储每日、每月和每年的数据,请考虑不止一个事实table。
您还可以使用每天一行的维度 table 以及有助于聚合的各种属性,例如会计年度。