-->

计算成员具有多个属性层次 - MDX(Calculated Members with multip

2019-11-05 06:36发布

我发现这个小代码而动态计算TOTAL献给所有维度/层次我想。

这是接近我的需要,但不会为具有不同数量的层级(属性层次结构)的外形尺寸工作。 目前代码只如果只有一个,因为属性层次工程CurrentMember.Parent 。 我可以用CurrentMember.Parent.ParentDimension.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  ;

我愿作任何Dimension.Hierarchy此MDX代码的工作,无论属性层次(水平/秒)的数量。

任何帮助表示赞赏!

Answer 1:

您可以使用ancestors函数,而不是父母。 它需要一个尺寸参数,这表明你要多少级获得(在树有多深去),第二个参数。 所以,如果你知道有多少水平维度有,你可以使用这样的:

Ancestors(Axis(1).Item(0).Item(0).Dimension.CurrentMember, 5) 

取而代之的是一些你还可以添加一个维度级别作为第二个参数。 然后,它会去深如指定的维度级别 - 因此,如果您添加根维度级别应该到那里



Answer 2:

(Axis(1).Item(0).Item(0).Dimension.Levels(0).Item(0), [Measures].[On Hand Amount])

上面给了我正确的答案, 总的措施对任何尺寸的动态选择,但这MDX计算不会从PowerBI(DAX)报告,该报告只是PowerBI的限制下进行工作。

我得到了TOTAL这个现在的工作 -

SCOPE(DESCENDANTS([Warehouses].[Warehouses],,AFTER));          
[Measures].[Total On Hand Amount] = (ROOT([Warehouses]),[Measures].[On Hand Amount]);
END SCOPE;

我只是重复此范围内的每个[维度]。[层次]多维作出任何选择,包括从电源BI多个维度的总功。 它没有像轴动态功能()一样,但它得到我需要的结果。

希望这会帮助别人过!



文章来源: Calculated Members with multiple Attribute Hierarchy - MDX