1

我是 OLAP 的新手,所以也许我不知道该问题使用的正确术语,但请耐心等待。

我处理大量分层的多维数据,其中父/聚合单元格大多具有数据,但子/叶单元格通常缺少数据(属性值未知但非零)。我目前使用脚本和 SQL 的组合来使用它,但这变得笨拙。似乎 OLAP 多维数据集和 MDX 更适合数据结构,但不一定适合我需要处理的任务。例如:

  • OLAP 似乎主要是为只读报告而设计的;我对批处理中的数据进行了大量修改
  • OLAP 似乎喜欢拥有完整的叶级数据来计算聚合;我的数据在各个级别都有缺失值

我想做的例子:

  • 将原始多级数据加载到立方体中并保存已知父级;不要将它们的值覆盖或显示为计算的子项聚合(可能不完整)。
  • 根据来自其他多维数据集的复杂查询/连接的结果创建/更新/删除多维数据集中的单元格。有时需要转换多维数据集以使用稍微不同的维度定义。
  • 用户需要对未知值进行估计。我可以创建体面的估计,但需要对其进行调整,以使它们符合所有维度和级别的已知父母/孩子(这比听起来要困难得多)。我已经这样做了,但它涉及将数据从 RDBMS 中提取到自定义可执行文件中。
  • 查询和计算需要能够正确处理未知数。理想情况下,能够轻松查询聚合单元格的值中有多少是由估计值和已知值组成的,可能计算置信度/误差统计,或者检查我们是否可以在未知的父节点和所有已知的情况下推导出一个确切的值已知的兄弟姐妹等
  • 数据可以很大……多达数千万的事实表行。批处理作业的性能需要不错(几分钟还可以,几小时没那么多)。

OLAP 服务器和 MDX 能否成为此类工作的好工具?是否有任何其他工具可以很好地处理分层/多维/填补空白的数据?

4

1 回答 1

1

这是 OLAP 系统的一些需求,既有趣又具有挑战性 :-) :

- 将原始多级数据加载到立方体中并保存已知父级;不要将它们的值覆盖或显示为计算的子项聚合(可能不完整)。

您可以更改多维数据集在层次结构中聚合值的方式。在一个层次结构中执行此操作很好,在多个层次结构中执行此操作可能会开始变得复杂。如果存在多个“特殊”层次结构的问题的数学“唯一”解决方案,则值得检查两次。

根据来自其他多维数据集的复杂查询/连接的结果创建/更新/删除多维数据集中的单元格。有时需要转换多维数据集以使用稍微不同的维度定义。

在这里您可以使用 writeback(MDX 函数更新立方体),但我认为它对于您的需求来说有点太简单了。实施取决于供应商。请注意,创建单元格会破坏您的记忆,因为对于大型立方体,您可以在一个子立方体中快速拥有数百万个单元格。

你的模型的稀疏性是多少?-> 有数据的单元格数/总单元格数

有些模型的稀疏度为 1e-30,如果您要更新所有单元格,这里很容易爆炸 ;-)。

用户需要对未知值进行估计。我可以创建体面的估计,但需要对其进行调整,以使它们符合所有维度和级别的已知父母/孩子(这比听起来要困难得多)。我已经这样做了,但它涉及将数据从 RDBMS 中提取到自定义可执行文件中。

这看起来很复杂这里的问题是算法的复杂性,使用 MDX 语言的可能解决方案以及它们如何与 OLAP engige 匹配(足够快)。你冒着爆炸的风险,但看看Scope 功能

数据可以很大……多达数千万的事实表行。批处理作业的性能需要不错(几分钟还可以,几小时没那么多)。

这不应该是一个真正的挑战..

回答你的问题,我不这么认为。我们有一个类似的问题——在遗传领域——我们将解决这个问题,“添加”一个专用的计算模块到我们的 OLAP 解决方案中。这是一个有趣的正在进行的项目

于 2011-09-09T08:42:11.270 回答