如何使用 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 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?
针对 InterSystems Caché 中 DeepSee MDX 查询的 JSON 数据