具有多个属性层次结构的计算成员 - MDX
Posted
技术标签:
【中文标题】具有多个属性层次结构的计算成员 - MDX【英文标题】:Calculated Members with multiple Attribute Hierarchy - MDX 【发布时间】:2018-11-01 20:09:12 【问题描述】:我发现了这个小代码,它为我想要的所有维度/层次结构动态计算 TOTAL
s。
这接近我需要的,但不适用于具有不同数量的层次结构级别(属性层次结构)的维度。由于CurrentMember.Parent
,当前代码仅在只有一个属性层次结构时才有效。我可以将CurrentMember.Parent.Parent
用于具有两个级别的Dimension.Hierarchy
,依此类推,但不适用于只有一个属性层次结构(级别)的那些。
CALCULATE;
CREATE MEMBER CURRENTCUBE.[Measures].[Total On Hand Amount]
AS ([Measures].[On Hand Amount],Axis(1).Item(0).Item(0).Dimension.CurrentMember.Parent),
FORMAT_STRING = "#,#",
VISIBLE = 1 ;
我想让此 MDX 代码适用于任何 Dimension.Hierarchy,无论属性层次结构(级别/秒)的数量如何。
感谢任何帮助!
【问题讨论】:
Calculated Member for the TOTAL of a measure for multiple Dimensions的可能重复 【参考方案1】:您可以使用ancestors
函数代替父函数。它需要一个维度参数和第二个参数,该参数显示您想要获得多少级别(树的深度)。因此,如果您知道您的维度有多少级别,您可以使用以下内容:
Ancestors(Axis(1).Item(0).Item(0).Dimension.CurrentMember, 5)
除了数字之外,您还可以添加维度级别作为第二个参数。然后它将与指定的维度级别一样深 - 因此,如果您添加根维度级别,它应该会到达那里
【讨论】:
(Axis(1).Item(0).Item(0).Dimension.Levels(0).Item(0), [Measures].[On Hand Amount]) 给了我正确的answer, total 用于动态选择任何维度的度量。它在 AS 浏览器上运行良好,但当我尝试在 Power BI 报告中使用它时出现此错误。 Power BI 不喜欢那里引用的 Axis() 函数。你有什么建议可以解决这个问题,以便我可以在 Power BI 报告上使用这一新措施。我可以在不完全使用 Axis() 函数的情况下为任何维度动态完成此计算 [% of Total] 吗? 我没有使用过 PowerBI,但我的猜测是它是否可以在管理工作室中工作,并且您可以在那里看到正确的结果集,该工具应该能够处理它【参考方案2】:(Axis(1).Item(0).Item(0).Dimension.Levels(0).Item(0), [Measures].[On Hand Amount])
上面给了我正确的答案,total for a measure 用于动态选择任何维度,但此 MDX 计算不适用于 PowerBI(DAX) 报告,这仅仅是 PowerBI 的限制。
我得到了 TOTAL 现在正在处理这个 -
SCOPE(DESCENDANTS([Warehouses].[Warehouses],,AFTER));
[Measures].[Total On Hand Amount] = (ROOT([Warehouses]),[Measures].[On Hand Amount]);
END SCOPE;
我只需为多维数据集中的每个 [Dimension].[Hierarchy] 重复此 SCOPE,以使 TOTAL 适用于任何选择,包括 Power BI 中的多个维度。它没有 Axis() 那样的动态功能,但它产生了我需要的结果。
希望这对其他人也有帮助!
【讨论】:
以上是关于具有多个属性层次结构的计算成员 - MDX的主要内容,如果未能解决你的问题,请参考以下文章
SSAS MDX WHERE 子句语法 - 从同一层次结构中过滤多个值