中位数、众数、百分位数和 OLAP

Tom*_*ell 9 ssas statistics olap

我是新手,试图围绕 OLAP 进行思考,我有几个问题。

  • 问题 1: OLAP 多维数据集可以存储中位数、众数、百分位数吗?
  • 问题 2:用户编写的 MDX 查询能否返回行级数据的摘要?(例如:交易百分比 > 100 美元)。或者多维数据集设计者必须将它添加到多维数据集中?
  • 问题 3:现在是否有任何 OLAP 产品提供访问行级数据的机制?哪一个?

我们的 IT 部门正在寻求有关特定 MS Analsis Services ROLAP 多维数据集出现的问题类型的反馈。我们无权访问其背后的关系数据库,需要执行当前无法作为多维数据集中度量的计算。

让我看看我是否有这个权利。

  1. 立方体可以提供计数、均值、比例、标准偏差的统计数据。
  2. 如果多维数据集设计器提供的度量未满足特定统计数据,我们是否可以编写 MDX 查询来获取它?或者他们是否需要更改多维数据集以便从行级数据预先计算它?
  3. 多维数据集无法提供中位数、众数或百分位数等统计数据,因为这些统计数据不能正确聚合。

我正在阅读 Leland Wilkinson 的The Grammar of Graphics以及他关于数据挖掘和 OLAP 的章节,他说

这些 [立方体操作] 可以很好地处理诸如计数、均值、比例和标准差之类的统计数据。子类上的简单聚合可以通过对和、平方和和其他组合在线性函数中的项进行运算来计算,以生成基本的汇总统计。

它们不能与中位数、众数和百分位数等统计数据一起正常工作,因为这些统计数据的汇总不是它们汇总的统计数据。例如,中位数的中位数不是合计的中位数。

他接着补充说:

然而,最近出现了一种更复杂的 ROLAP 模型。通过多种技术,可以让统计算法通过关系模型实时访问原始数据。这种方法比数据立方体等结构提供的刚性聚合更有前途。

在这种架构的最优雅的形式中,应用程序可以请求远程连接以提供有关其数据处理方法的信息,并根据返回的信息采取适当的行动。在这种形式下,组件架构可以实现分布式计算的真正承诺:独立于站点、操作系统或语言的设计和执行。

那是大约 2005 年写的。有人知道使用这种方法来允许行级数据访问的产品吗?

Con*_*lls 5

要按顺序回答您的问题:

  1. 多维数据集不存储中值、众数(甚至平均值),但您可以编写查询来计算它们并将它们作为计算度量嵌入多维数据集中。嵌入此类计算的能力是 OLAP 技术的主要独特卖点之一。
  2. 如果您有一个可以识别单个行的维度(这可能是从事实表上的标识符派生的退化或“事实”维度),那么您可以基于单个行进行查询。但是,OLAP 在维度和聚合方面起作用,因此您需要有一个能够识别单个行的维度(聚合由一个值组成)。
  3. 任何 OLAP 工具都可以执行 (2) 中描述的操作,而且它们通常支持一种称为“钻取”的机制,其中多维数据集将返回您钻取到的给定切片下的事务数据的边界。

如果您想进行在多维数据集脚本中无法直接使用的计算,许多 OLAP 工具(例如最新的、令人遗憾的 ProClarity)将允许您制定涉及基于自定义 MDX 的计算的查询。除非多维数据集没有您进行实际计算所需的信息,否则自定义 MDX 计算应该能够支持您需要的任何计算。

尽管 OLAP 查询传统上与汇总的统计查询相关联,但如果您有一个允许向下钻取到您需要的详细信息的维度,则当然可以制定将计算中位数、百分位数或直方图查询的查询,从中可以推断或计算模式。

例如,这里有一个基于排名的帕累托分析查询示例。

许多多维数据集产品可以在混合或关系 OLAP 模式下运行,在这种模式下,它们不会自己保存数据,而是从底层数据库中查询数据。此外,Business Objects、Report Builder 或 Discoverer 等纯 ROLAP 工具可以从底层数据库进行查询并逐行进行工作。然而,它们往往缺乏专用 OLAP 产品的复杂性,并且它们没有太多的现成的统计分析能力。