具有多个属性层次结构的计算成员-MDX

时间:2018-11-01 20:09:12

标签: ssas mdx cube-script

我发现了这个小代码,它可以为我想要的所有维度/层次结构动态计算TOTAL

这接近于我的需要,但不适用于具有不同层次级别数(属性层次)的维。当前代码仅在由于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,而不考虑属性层次结构的数量(级别/秒)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用ShipmentEntity函数代替父函数。它带有一个维度参数和第二个参数,该参数显示您想要获取多少个级别(要深入树中的深度)。因此,如果您知道维度有多少个级别,可以使用类似以下内容的方法:

form input[type=search] {
   width: 60%;
   /* font-size: 1.1em; -- not em */
   font-size: 1.1rem; /* -- yes rem */
   padding: .35em .4em;
   line-height: 1.8em; /* -- add this -  whatever height you want in em */
   height: 1.8em; /* -- add this -  whatever height you want in em */
   box-sizing: border-box; /* -- you will probably want to add this because you are using padding */
}

除了数字,您还可以添加尺寸级别作为第二个参数。然后它将达到指定的维度级别的深度-因此,如果您添加根维度级别,则应该达到该级别

答案 1 :(得分:0)

(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;

我只需要对多维数据集中的每个[Dimension]。[Hierarchy]重复此范围,以使TOTAL对包括Power BI中多个维度在内的任何选择有效。它没有Axis()那样的动态功能,但是可以产生我需要的结果。

希望这对其他人也有帮助!