计算尺寸/尺寸

计算尺寸/尺寸

问题描述:

我对MDX比较陌生,正在努力完成我认为应该是一件容易的事情,但我还没有找到任何解决方案。计算尺寸/尺寸

我有一个销售多维数据集,其中一个衡量标准是可以是负面或正面的利润。我想要得到一个实际上是实际利润总和的措施,即只在新措施中包括那些利润为正的利润。

这里的技巧是,这是该行的详细程度和类似

与会员Measures.PositivePNL作为IIF(Measures.PNL> 0,Measures.PNL,0)

不起作用因为这只适用于合计号

如果您想在行详细信息级别执行MDX操作,您将需要一个包含事实表ID的维(因此维中的每个成员都代表事实中的一行表)。然后你可以写一个计算:

WITH MEMBER Measures.PositivePNL as 
' 
Sum([DimFactId].[DimFactId].Members, IIF(Measures.PNL > 0, Measures.PNL, 0)) 
' 

但是,如果你的事实表中有很多行,这可能会很慢。另一种方法是在事实表中添加一个只包含PNL正值的列。

我应该提到我正在使用Mondrian/MySQL。我来到了类似的结论,但找到了一种方法来创建一个新的退化维度使用SQL键表达式(所以我实际上并不需要列添加到表):

<Dimension name="PNLCategory"> 
    <Hierarchy hasAll="true"> 
     <Level name="PNLCategory" column="pnlCategory" uniqueMembers="true"> 
      <KeyExpression> 
       <SQL dialect="generic"> <![CDATA[IF(pnl >= 0,'Winner','Loser')]]></SQL> 
      </KeyExpression> 
     </Level> 
    </Hierarchy> 
</Dimension> 

现在它变得很容易做到的计算成员:

<CalculatedMember name="WinnersCountByPNL" aggregator="count" dimension="Measures"> 
    <Formula>([PNLCategory].[Winner], Measures.PNL)</Formula> 
    <CalculatedMemberProperty name="FORMAT_STRING" value="$#,###"/> 
    <CalculatedMemberProperty name="DATATYPE" value="Numeric"/> 
</CalculatedMember>  

所以在这里我限制总和只有“赢家”和好处是,蒙德里安不会从该行表中检索数(事实)项。