OLAP 多维数据集操作和 MDX 有什么关系?

How are OLAP-cube operations and MDX related?

我想了解 OLAP 多维数据集操作(即钻取 up/down、slicing/dicing 和旋转)与 MDX 之间的关系。 我目前的猜测是,MDX 的 OLAP 多维数据集操作就像 SQL 的关系代数。但是,我没有看到 MDX 的一些基本功能如何对应于 OLAP 多维数据集操作。例如,考虑以下对 icCube 附带的演示 "Sales" 多维数据集的查询:

SELECT {([Ottawa],[2009]), ([United States],[Feb 2010])} on Rows,
       [Measures].members on Columns
FROM [Sales]

元组的使用(例如([Ottawa],[2009]))如何对应于 OLAP 多维数据集操作?

您可以将 MDX 查询视为指定多维数据集内 space 的区域或区域 - 元组是为处理器提供与您感兴趣的多维数据集部分相对应的坐标的主要方式英寸

你指定的坐标和切片的交集给你一个结果。

MDX 与集合论密切相关,因为立方体的主要类型是维度、集合、元组、成员等。

MDX 查询定义了一个 table,对于每个 table 单元格,我们都有一个元组。在您的场景中,假设我们有两个度量( Meas1、Meas2 ):

([Ottawa],[2009],[Meas1])                 ([Ottawa],[2009],[Meas2])
([United States],[Feb 2010],[Meas1])      ([United States],[Feb 2010],[Meas2])

在此单元格元组上,您可以添加 WHERE clause, the SubQuery 和可能与 ALL 不同的默认值(不建议)。记住 all 是一个被忽略的 'special' 成员。

一个元组定义了一个单独的度量,Meas1 或 Meas2,这将 select 'fact table' 与一个度量列,通常是一个数值。其他成员用于 table 中的 select 行,对元组成员 Ottawa 和以2009年为例。正如 whytheq 所解释的那样,您对 'play' 的成员进行了很多转换,就像对集合进行的转换一样。

这是简单的视觉,因为您可以使用 calculated members that define a transformation instead of a simple row aggregation (e.g. Difference with previous year) and some aggregations 有点棘手(打开、关闭...)。

但是,如果您很好地理解了这一点,那么您就为理解 MDX 打下了完美的基础。

是的,"OLAP-cube operations are what visualization tools are expected to implement"。 MDX 是针对生成结果的多维数据集执行的查询语言。 OLAP 客户端通常 运行 MDX 针对一个多维数据集。 "OLAP cube operations" 如该维基百科中所述,通常是某人对客户端应用程序中的多维数据集执行临时分析的结果。

Cube 提供了一种结构和一种访问语言,通常可以使这些类型的操作更容易(或至少更快)

MDX 与 "drill down" 操作有何关系?例如?

首先,一些 MDX 已经 运行 并产生了某种多维数据集视图(通常是一些行、一些列和交叉点中的度量,尽管 MDX 语言语法不限于两个轴)。

所以有人看到此信息并决定向下钻取行中的单个项目(此项目之前由某些 MDX 返回)。因此 OLAP 客户端生成一些 MDX,提供关于项目的向下钻取视图

它可能只是将子 MDX 函数添加到有问题的项目中。或者它可能会以其他方式做到这一点。这取决于客户。

这里有一些关于如何窃听 OLAP 客户端(哪个?无关紧要)和 SSAS 多维数据集之间的交互的介绍性信息

https://docs.microsoft.com/en-us/sql/analysis-services/instances/introduction-to-monitoring-analysis-services-with-sql-server-profiler