Ssas 计算在MDX中首次产生收入的客户

Ssas 计算在MDX中首次产生收入的客户,ssas,mdx,Ssas,Mdx,我想计算一下当前期间首次活跃的客户。假设活动客户的计算如下所示 MEMBER [Measures].[ActiveCustomers] AS Sum( [Customer].[Customer Id].Members, IIF([Measures].[Revenue] > 0,1,NULL)) 成员[度量][ActiveCustomers]为 总数( [客户][客户Id]。成员, IIF([指标].[收入]>0,1,空)) 我需要如何或使用哪些功能来确定在当前期间首次产生收入的客

我想计算一下当前期间首次活跃的客户。假设活动客户的计算如下所示

MEMBER [Measures].[ActiveCustomers] AS Sum( [Customer].[Customer Id].Members, IIF([Measures].[Revenue] > 0,1,NULL)) 成员[度量][ActiveCustomers]为 总数( [客户][客户Id]。成员, IIF([指标].[收入]>0,1,空)) 我需要如何或使用哪些功能来确定在当前期间首次产生收入的客户

如果您在写“计算客户”时是指“获取客户ID列表”,那么

我们应该做到这一点。
这将检查当前期间的收入是否大于0,以及所有之前期间的总和是否为零。如果您的收入为负,这可能会失败,因为正收入和负收入可能会相互抵消,但我假设情况并非如此。

您如何确定当前期间?是否要使用时间层次结构底层的最后一个成员?还是要根据当前系统日期计算某些内容?或者您是指此层次结构的
CurrentMember
?我将根据日期层次结构对其进行透视,比如说它名为[Calendar].[Year-Month-Day],我将使用[Calendar].[Year-Month-Day].CurrentMember来确定当前期间。我需要计数,但在这种情况下,我需要聚合不同数量的客户。假设我想获得客户,他们在这一时期创造了收入,而不是在前一个时期,并且在两个时期之前也创造了收入。。。。我需要使用最后一个期间(2,[日历][年-月-日]),并添加到上述条件中?这应该行吗?@Mez好的,在这种情况下,只需使用
Count
而不是
Filter
。如果您想要两个时期前有收入的客户,则应为
([Calendar].[Year-Month-Day].CurrentMember.Lag(2),[Measures].[revenue])>0
。并始终考虑到
CurrentMember
可能是一天、一个月、一年或所有成员,或者您的时间层次结构中的任何内容。并且考虑一下表达式对于所有这些的行为(如果它们恰好可以在查询中使用的话)。事实上,这就是为什么我想使用CurrentMember,所以它不会绑定到任何句点。关于LastPeriods(X,[Calendar])与CurrentMember.Lag(2)-这两种用法的区别是什么?@Mez
LastPeriods(X,[Calendar])
返回一组/范围的
X
成员,而
Lag(X)
只返回一个成员,即
X
步。我知道你们想要的客户正好在两个时期前就有收入。
Filter([Customer].[Customer Id].[Customer Id].Members,
       ([Calendar].[Year Month Day].CurrentMember, [Measures].[Revenue]) > 0
       AND
       Sum(null : [Calendar].[Year Month Day].CurrentMember.PrevMember, [Measures].[Revenue]) = 0
      )