Ssas SSA(查找mdx度量值)在某个日期对类别中的不同客户进行计数
我刚刚实现了一个SSAS结构,它处理客户和时事通讯订阅 我正在处理一个我现在还没有解决的简单问题 下面是我的一个事实表的简单摘录: 日期|类别|联系人 201401 | noSub | PaulSsas SSA(查找mdx度量值)在某个日期对类别中的不同客户进行计数,ssas,mdx,msbi,Ssas,Mdx,Msbi,我刚刚实现了一个SSAS结构,它处理客户和时事通讯订阅 我正在处理一个我现在还没有解决的简单问题 下面是我的一个事实表的简单摘录: 日期|类别|联系人 201401 | noSub | Paul 201403 |多|保罗 201602 | Mono | jean 201604 | Mono | Paul 201604 |多|保罗 201609 | noSub | jean 201703 |多|保罗 我想获得一个度量值(contactNumber),它可以告诉我在请求时一个类别中有多少联系人 我创
201403 |多|保罗
201602 | Mono | jean
201604 | Mono | Paul
201604 |多|保罗
201609 | noSub | jean
201703 |多|保罗 我想获得一个度量值(contactNumber),它可以告诉我在请求时一个类别中有多少联系人 我创建了这个度量:(DC_Contact是一个不同于Contact的计数)
[Measures].[ContactNumber]=
合计(
NULL:[期间].[每季度].CURRENTMEMBER
,[测量][直流电触点]
但当我查到201703时,它给了我
noSub=2(1除外)
多重=2(1除外)
Mono=2(0除外)
到201604年,我将
noSub=2(2除外)
多重=1(0除外)
Mono=1(0除外)
很难为您提供帮助,因为我们缺少有关多维数据集结构的详细信息,但您可能应该使用DistinctCount()
请毫不犹豫地添加有关您的结构的更多信息,这将对您有所帮助。谢谢您的回答。
我找到了解决这个问题的办法
CREATE MEMBER CURRENTCUBE.[Measures].[mono] AS
filter(
GENERATE(
DynamicContactSet,
tail(
-- ORDER(
filter(
[Contact].[Contact PMID].currentmember
* {null : [Period].[Per quarter].currentmember}
* {null : [Period].[Per week].currentmember}
* [Category].[Category].[Category]
,[Measures].[max_date]>0)
-- ,[Measures].[max_date],desc)
,1)
),cint([Category].[Category].currentmember.MEMBER_KEY)= 1
).count
, VISIBLE = 0;
CREATE MEMBER CURRENTCUBE.[Measures].[multi] AS
filter(
GENERATE(
DynamicContactSet,
tail(
-- ORDER(
filter(
[Contact].[Contact PMID].currentmember
* {null : [Period].[Per quarter].currentmember}
* {null : [Period].[Per week].currentmember}
* [Category].[Category].[Category]
,[Measures].[max_date]>0)
-- ,[Measures].[max_date],desc)
,1)
),cint([Category].[Category].currentmember.MEMBER_KEY)= 2
).count
, VISIBLE = 0;
CREATE MEMBER CURRENTCUBE.[Measures].[unsuscriber] as
filter(
GENERATE(
DynamicContactSet,
tail(
-- ORDER(
filter(
[Contact].[Contact PMID].currentmember
* {null : [Period].[Per quarter].currentmember}
* {null : [Period].[Per week].currentmember}
* [Category].[Category].[Category]
,[Measures].[max_date]>0)
-- ,[Measures].[max_date],desc)
,1)
),cint([Category].[Category].currentmember.MEMBER_KEY)=3
).count
, VISIBLE = 0;
CREATE MEMBER CURRENTCUBE.[Measures].[notopin] as
DynamicContactSet.count - (mono + multi + unsuscriber)
, VISIBLE = 0;
CREATE MEMBER CURRENTCUBE.[Measures].[ContactNumber] AS
CASE
WHEN cint([Category].[Category].currentmember.MEMBER_KEY)= 1 THEN mono
WHEN cint([Category].[Category].currentmember.MEMBER_KEY)= 2 THEN multi
WHEN cint([Category].[Category].currentmember.MEMBER_KEY)= 3 THEN unsuscriber
ELSE notopin
END
, VISIBLE = 1;
然后我可以随时了解某个类别中有多少联系人:
SELECT [Measures].[ContactNumber] on columns
,(
{[Period].[Per Quarter].[month].[M01-2000]
,[Period].[Per Quarter].[month].[M01-2005]
,[Period].[Per Quarter].[month].[M01-2007]
,[Period].[Per Quarter].[month].[M01-2010]
,[Period].[Per Quarter].[month].[M01-2015]
,[Period].[Per Quarter].[month].[M01-2017]
,[Period].[Per Quarter].[month].[M12-2017]}
,[Category].[Category].[Category]
) ON rows
FROM [BI SUBSCRIPTION]
where
{
[Contact].[Contact PMID].[jean paul]
[Contact].[Contact PMID].[jean michel]
[Contact].[Contact PMID].[jean françois]
[Contact].[Contact PMID].[jean christophe]
[Contact].[Contact PMID].[jean rachid]
}
但现在更大的问题是性能。。。
但我不知道如何在不减少数据量的情况下提高性能
问候