如何使用 MDX 查询检索内部节点的数据集?

Posted

技术标签:

【中文标题】如何使用 MDX 查询检索内部节点的数据集?【英文标题】:How to retrieve the internal node's dataset using MDX query? 【发布时间】:2013-08-22 06:40:33 【问题描述】:

我尝试使用 MDX 查询在更高级别(不是叶级别)检索数据集。但结果不正确。例如,基于 Microsoft Adventure Works DW 2008R2 数据库。我想从这两个维度获取数据:

[Customer].[Education].[All Customers]
[Geography].[Country].[All Geographies]

使用 Internet 销售额度量。我使用的 MDX 查询是:

select [Measures].[Internet Sales Amount] on axis(0), ([Customer].[Education].[All Customers]) on axis(1) ,([Geography].[Country].[All Geographies]) on axis(2) from [Adventure Works]

结果是 29358677。

但是当我将两个维度的子节点相加时,结果如下:

结果是 176152062。我的 MDX 查询有什么问题?

【问题讨论】:

【参考方案1】:

我得到的数字与您不同:您的查询返回一个三维结果,大多数客户端工具最多只能处理二维。由于列上只有一个成员(Internet Sales Amount 度量),我将其移至滑块轴,将行轴移至列,将页面轴移至行,从而能够运行修改后的查询

select ([Customer].[Education].[All Customers]) on axis(0) ,
       ([Geography].[Country].[All Geographies]) on axis(1)
 from [Adventure Works]
where [Measures].[Internet Sales Amount]

在 SSMS 中,结果为 29,358,677.22 美元。这正是第二个表中每一列的总和。这些列中的每一列都有相同的结果。这是意料之中的,因为Geography 维度与Internet Sales 度量组无关。因此,针对该维度的每个成员重复相同的 Internet Sales Amount 值。如果您想在 AdventureWorks 中使用 Internet Sales 的地理细分,您必须使用在 Customer 维度的 Location 文件夹中找到的层次结构。

【讨论】:

非常感谢!它对我有很大帮助!顺便说一句,“Geography 维度与 Internet 销售度量值组无关”是什么意思? @injoy 用关系数据库术语表示:“Internet Sales”度量组所基于的事实表中没有外键到 Geography 的维度表。而且也没有通过多对多关系的间接关系。如果您在 BIDS 中打开多维数据集定义,然后查看第二个选项卡“维度使用情况”,则可以查看所有关系。

以上是关于如何使用 MDX 查询检索内部节点的数据集?的主要内容,如果未能解决你的问题,请参考以下文章

MDX 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?

在多维数据集或 mdx 查询中可视化“ALL”汇总

针对 InterSystems Caché 中 DeepSee MDX 查询的 JSON 数据

如何使用 MDX 获得类似 T-SQL 的单轴叶级结果

对 Analysis Services 的 VBA Reptitive MDX 查询

SSAS - 将 MDX 报告参数传递给 MDX 数据集查询