所有维度的通用计算度量

时间:2015-04-02 12:55:10

标签: ssas mdx

我有一个4维的立方体,我有一个名为Transaction Count的度量。现在,我想计算上述度量的所有维度的Percentage

我还有一个名为Cars的维度。我对所有Cars进行了计数,现在我已经定义了一个计算度量,用于根据事务总数计算每辆汽车的Percentage。但它只适用于那个特定的维度。

如何创建可在所有维度中使用的单个百分比计算度量?

计算度量的MDX :(仅适用于Carmake维度)

CASE
    WHEN ISEMPTY( [MEASURES].[Trans COUNT] ) 
    THEN 0
    ELSE ([Dim Car Make].[Hierarchy].CURRENTMEMBER,
           [MEASURES].[FACT COLORPERFORMANCE COUNT])/
         ( [DIM CAR MAKE].[CARMAKE].[(ALL)].[ALL], 
           [MEASURES].[Trans COUNT])
END

我已经有了Trancount(1000)指标。现在我需要创建一个计算的度量值Freq%,它应该在所有维度上计算。

截图 - > http://i.stack.imgur.com/iuaQO.jpg(发布图片需要10个代表)

屏幕截图中的表1 - 您拖放carmake维度,然后根据CarMake细分计算Tran Count和Freq%。

屏幕截图中的表2 - 您删除CarMake并拖动质量,然后应根据质量细分计算Tran Count和Freq%。

屏幕截图中的表3 - 您删除质量并拖动品牌,然后根据品牌细分计算Tran Count和Freq%。

1 个答案:

答案 0 :(得分:0)

我发现的最好方法是使用AXIS()动态获取当前使用的维度。

with
member Member_Lvl as AXIS(0).item(0).level.ordinal --get the level for next calc
member All_Member as sum(ancestor(axis(0).item(0).hierarchy.currentMember,<yourMeasure>),Member_Lvl )
member Percent_of_All as sum(axis(0).item(0).hierarchy.currentMember,<yourMeasure>) / All_Member 

select <Your Dim > on 0, {<Your Measure>, Percent_of_All} on 1
from <Your Cueb>

注意:如果需要其他聚合,请在计算中替换SUM函数。