2012-01-20 20 views
1

我收到了最近一次创建查询的请求,该查询每周返回前100位客户的收入。我可以明显轻松地返回整个前100位客户,但是当我添加周属性时,我的查询超时。我只是想知道如果有一些已经遇到了这个问题,或者能够产生一个可比较的查询?SSAS - > MDX - >如何创建一个查询,在某个日期(即周)返回一个topcount?

我的查询没有一周出现。 :

 SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS, 
NON EMPTY TopCount ({ ([Customer].[Customer Id].[Customer Id].ALLMEMBERS * [Customer].[Name].[Name].ALLMEMBERS ) }, 100, [Measures].[Revenue]) ON ROWS 
FROM [DW] 

我的问题与星期礼物,只是完全超时。 :

SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS, 
NON EMPTY TopCount ({ ([Customer].[Customer Id].[Customer Id].ALLMEMBERS * [Customer].[Name].[Name].ALLMEMBERS * [Date Link].[Week].[Week].ALLMEMBERS) }, 100, [Measures].[Revenue]) ON ROWS 
FROM [DW] 

回答

1

难道这不会给你前100名顾客和他们排在前面的那一周吗?因此,客户A可能在第一周的第一个位置,第二周的第五个位置等等,但是总共100行,而不是每周100个?

尝试像

SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS, 
NON EMPTY 
{ 
[Date Link].[Week].[Week].ALLMEMBERS * 
{ 
TopCount ({ ([Customer].[Customer Id].[Customer Id].ALLMEMBERS * [Customer].[Name].[Name].ALLMEMBERS) }, 100, [Measures].[Revenue]) 
} 
} 
ON ROWS 
FROM [DW] 

我想你可能需要使用生成,而不是*为期一周的成员,不记得,并试图做到这一点从我的头顶;)

+0

标记为答案,因为这是我最接近的答案之一。这为我提供了结果,但每周没有100位顾客。它显示了90周和70周,我将使用生成函数进行研究。谢谢,因为这会给我更多的方向。 –

+0

@UserSmith你有没有检查过这几个星期,你是否100%肯定至少有100个客户单独使用measure.revenue? – Meff

+0

是的,我检查了这一点,以确保通过SQL。那也是我的第一个猜测。我将在稍后检查,因为我相信有人正在更新数据,可能会给我带来不一样的结果。再次感谢您对此的指导。 –

相关问题