MDX:在YTD中使用计算成员的非重复计数

时间:2011-12-28 17:54:01

标签: sum distinct mdx

我创建了一个计算不同策略的新度量(此度量称为FK Policy Distinct Count)。

然后我创建了名为CountPolicyEndorsesNull的新计算成员,它使用过滤器计算来自FK Policy Distinct Count的所有政策:

(([Policy].[Endorses].&[0],[FK Policy Distinct Count])

我做了一个名为CountPolicy的新计算成员

SUM(EXCEPT([Policy].[Policy Status].[Policy Status],[Policy].[Policy Status].&[Void]), [Measures].[CountPolicyEndorsesNull])

接下来,我创建了一个新成员CountNewBound

SUM(
    {
        [Submission].[Tran Type].&[New], [Submission].[Tran Type].&[Developed]
    }, 
    [Measures].[CountPolicy]
)

最后,YTDCountNewBound

SUM(YTD([Invoice Date].[Date Hierarchy].CurrentMember), [Measures].[CountNewBound])

显然,SUM功能在这种情况下不起作用。知道如何为计算成员进行正确的YTD计数吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

不同的计数是一项特殊措施,应该稍加管理。这背后的理性是,在评估度量时,一组先前的值保存在内存中。为了提高性能,此结构不会被传递,并且很快就会转换为标量值。

回到你的问题:

可以毫无问题地在元组上评估不同的计数,但是一旦您尝试评估一组元组,就会遇到问题。可能但成本高昂且并非总是可能的是创建值的层次结构,以便您可以在维度的成员中转换集合。

在您的情况下,而不是使用YTD([发票日期]。[日期层次结构] .CurrentMember)功能使用另一个层次结构 - > [发票日期]。[YTD日期层次]。

所有这些都取决于您正在使用的特定OLAP实现,但我认为主要适用于所有OLAP供应商。