SSAS的计算成员中:
SUM(
(
ParallelPeriod(
[时间维度].[时间层次].[月],
1,
[时间维度].[时间层次].CurrentMember
) : [时间维度].[时间层次].CurrentMember)
,[Measures].[成交客户数]
)
这样俺系可以算出一段时间内的客户累计的,但是不对啊,要一段时间内的非重复的客户,
我这里拉了一个,[Measures].[客户编码]的无聚合的度量。
期间段内的非重复客户要怎么写呢?-。-
------解决思路----------------------
没有在后面做过非重复,一般在筛选集合数据的时候,已经做好。后期cube的mdx计算起来比较简单。
------解决思路----------------------
计算一段时间内的用户数量 ,我们使用 exists 来判断一个用户是否买过物品,具体察看exists的用法,这里我们没有定义时间段而是直接使用了年来作为各个时间段,我们可以根据实际要求来自己定义需要的set区间
WITH MEMBER [Measures].[CustomerNum] AS
(
EXISTS([Customer].[Customer].[Customer],,"Internet Sales")
).COUNT
SELECT {[Measures].[Internet Sales Amount],[Measures].[CustomerNum]} ON 0,
[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works]
如果我们只关注用户数量我们可以把度量去掉
WITH MEMBER [Measures].[CustomerNum] AS
(
EXISTS([Customer].[Customer].[Customer],,"Internet Sales")
).COUNT
SELECT {[Measures].[CustomerNum]} ON 0,
[Date].[Calendar].[Calendar Year] ON 1
FROM [Adventure Works]
------解决思路----------------------
我不知道你是要计算在一定时间内的注册用户数,还是有购物记录的用户数,其实这两个在处理上是一样的,所以这个问题应该是很容易处理的
------解决思路----------------------

--MDX 写法如下
WITH MEMBER [Measures].[CustomerNum] as
Exists([Customer].[Customer].[Customer].members,
[Date].[Calendar Year].currentmember ,"Internet Orders"
).count
select [Measures].[CustomerNum] on 0 ,
[Date].[Calendar Year].members on 1
from [Adventure Works]
--你可以将 上面的计算列嵌入到你cube 中 然后查询时候直接调用就可以了
Create MEMBER [Measures].[CustomerNum] as
Exists([Customer].[Customer].[Customer].members,
[Date].[Calendar Year].currentmember ,"Internet Orders"
).count