1

我最近收到了一个创建查询的请求,该查询返回每周收入排名前 100 的客户。显然,我可以轻松地返回整体排名前 100 位的客户,但是当我添加周属性时,我的查询超时。我只是想知道是否有人遇到过这种情况或能够产生类似的查询?

我的查询在没有一周的情况下有效。:

     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]
4

1 回答 1

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]

我认为您可能需要使用 GENERATE 而不是 * 与周成员一起使用,不记得并试图在我的脑海中做到这一点;)

于 2012-01-25T11:28:29.170 回答