我正在根据从多个 OLTP 源收集的数据构建本地 OLAP 多维数据集。请注意,我以编程方式执行此操作,并且无法访问 SSAS 或基于 MDX 的工具之类的工具。
我的要求和OLTP系统用户的操作要求有些不同。我知道“理论上”最好保留我可用的最原子颗粒,但我认为没有理由在多维数据集中包含最低级别的数据。
例如(我正在简化),我有一个像“价格”这样的度量字段。此外,每个销售事实都有一个 Version 属性,其值如下:
- 清单(原件/初始)
- 初始报价
- 调整后的报价
- 卖
这些描述了我们定价的内部发展,对我创建的报告至关重要。
但是,为了我的报告目的,每当我引用给定事务时,我总是想知道所有版本的值。因此,我正在考虑在多维数据集中按版本对价格进行透视测量(版本在数据模型中仍将是其自己的实体),从而产生如下测量:
- 价位表
- 报价初始
- 报价调整后的
- 售价
由于在给定的时间点只有一个版本有效,因此我们不需要跨多个版本进行聚合。
已知优势
由于这将是一个本地多维数据集文件,因此这种方法似乎可以简化创建几个所需的计算度量来比较不同版本之间的价格(如果我使用 MDX 执行此操作,则在各个聚合级别创建计算度量不会成为问题)
它还将记录数量减少 3 到 6 倍,这将显着提高本地多维数据集的性能。
已知的缺点
虽然数据模型将匹配业务流程,但多维数据集不会以最原子级别存储数据。分析人员需要按度量选择区分版本,并且不能按版本过滤——他们总是会得到所有可用的版本。
这种方法将大大增加措施的数量。例如,我们跟踪的不仅仅是一个价格,而是我们为每笔交易跟踪的几个价格组成部分和其他度量。因此,如果我们为每笔交易跟踪十几个真正的度量值,如果我采用这种方法,最终可能会有 50-60 个度量值。
我知道,对于非常大的 Fact 表,出于性能目的,最好将 Fact 表中的所有可能字段分解为维度,但我不确定在使用本地多维数据集时是否是这种情况,很有可能,考虑到本地多维数据集的限制,我将在任何给定多维数据集文件中放入少于 50,000 条记录。
这种方法还有其他我遗漏的缺点吗?