MS SQL Server 2008 R2 で SSAS を使用して、企業データを含むキューブを格納しています。このキューブを Web アプリのピボット グリッドのデータ ソースとして使用し、「市場浸透率」レポートを生成します。
ユーザーは会社 ID のリストをアップロードできます。ID はデータベースに保存されます。
ユーザーが「市場浸透」レポートを生成したい場合、「選択」として機能するリストと「市場」として機能するリストを指定する必要があります。
送信後、次のような MDX ステートメントを使用して、両方のリストの ID がキューブ内の計算されたメンバーになります。
CREATE MEMBER [Prospects].[Measures].[selectids] AS COALESCEEMPTY(SUM( {
[Dim Bedrijf].[BronId].&[1234], [Dim Bedrijf].[BronId].&[1235],
...., [Dim Bedrijf].[BronId].&[3456]}, [Measures].[Fact Bedrijven Count] ),0)
これらのメンバーを作成した後、(キューブで既に定義されているメンバーとディメンションを使用して) レポート内のインジケーターを計算するための追加のメンバーが作成されます。最後に、必要なデータを返す select ステートメントがあります。
いずれかのリストの ID の数が 100k より小さい場合、これは正常に機能します。数値が大きくなると、タイムアウト エラーが発生し始めます。タイムアウトは 1 時間に設定されています (レポートは Web アプリとは別の win サービスで生成されます)。
私はまだ SSAS に慣れていないので、システムの境界に達しているだけなのか、それともより効率的にする方法があるのか 疑問に思っていましたか? これは 1M を超えるレコードを処理できるようにするために必要なので、これでよいかどうか疑問に思っています。
うまくいけば、私は明確ですが、そうでない場合はお知らせください。