1

週あたりの収益で上位100人の顧客を返すクエリを作成するという最近のリクエストを受け取りました。明らかに、全体として上位100人の顧客を簡単に返すことができますが、week属性を追加すると、クエリがタイムアウトします。誰かがこれに遭遇したのか、それとも同等のクエリを生成できたのか、疑問に思っていました。

週の存在なしで機能する私のクエリ。:

     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は第1週で1位、第2週で5位になる可能性がありますが、週に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 に答える