2

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 を超えるレコードを処理できるようにするために必要なので、これでよいかどうか疑問に思っています。

うまくいけば、私は明確ですが、そうでない場合はお知らせください。

4

1 に答える 1

0

Analysis Services のパフォーマンスの問題の 1 つが発生しています。計算されるメンバーを過度に使用すると、特に多数の単一メンバーを参照すると、クエリ時間が遅くなります。[Dim Bedrijf]計算に含まれるメンバーをグループ化するディメンションに別の属性を作成することをお勧めします。これにより、適切な属性メンバーとベース メジャーを選択するだけで済むため、計算メンバーを完全に使用する必要がなくなります[Measures].[Fact Bedrijven Count]。もちろん、これは ETL/リレーショナル モデリングの面でもう少し労力がかかることを意味します。ただし、クエリの実行時に非常に優れたパフォーマンスが得られます。

于 2013-10-10T16:19:10.403 に答える