事实和维度表之间的 MDX 查询

Posted

技术标签:

【中文标题】事实和维度表之间的 MDX 查询【英文标题】:MDX Query between Fact and dimension table 【发布时间】:2019-10-21 21:03:17 【问题描述】:

我在 SSAS 中有一个多维数据集,它有不同的维度和一个事实表。其中一个维度是具有 [weight] 属性的 dimGoodsType。我有一个 factSoldItems 有 [price] 度量。现在我想计算这个总和(价格 * 重量)(每个已售商品都有它的 dimGoodsTypeId,因此它的重量与 GoodsType 相关)我如何在 mdx 中定义这个公式?

【问题讨论】:

【参考方案1】:

您可以在您的多维数据集中定义另一个度量组,其中 dimGoodsType 作为数据源表,Weight 列作为度量,并像往常一样将其与 Goods Type 维度连接。然后,在Price 度量的属性选项卡中,您可以将Measure Expression 设置为[Measures].[Price] * [Measures].[Weight]。此计算将在任何聚合发生之前进行。主要问题是,如果您将直接计算定义为Price * Weight,SSAS 将首先对当前单元格上下文中的所有权重和所有价格求和,然后才会执行乘法运算,但您希望始终执行您的在叶级乘法并从那里求和。

另一种解决方案可能是创建view_factSoldItems,您将在其中将计算列Weighted Price 添加为price * weight,然后将此度量添加到多维数据集。

【讨论】:

以上是关于事实和维度表之间的 MDX 查询的主要内容,如果未能解决你的问题,请参考以下文章

没有FK时如何找到维度表和事实表之间的关系?

如何根据 mdx 中的另一个维度层次结构过滤维度层次结构

数据库——事实表和维度表

维度表和事实表的含义是啥?

如何在 MDX 中基于维度属性定义计算度量?

OLAP:为啥事实表和维度表之间的所有外键都应该是代理键?