1

SQL Server 2008 R2 を使用して、概要レポートの MDX メジャー計算でパフォーマンスの問題が発生しました。

個人ディメンションと、個人ごとに複数のレコードを含む関連するファクト テーブルがあります。(資格)

たとえば、[Measures].[Other Qual Count] は、特定のタイプの資格の数を示します。1 人が複数持つ可能性があるため、1 人に対して [メジャー].[その他のクォル カウント] > 1 となります。

ただし、私の要約レポートでは、これを 1 人あたり 1 つだけとして示したいと思います。(その他の資格を有する者の数を示すため。)

要約レポートは、不明な地域階層 (3 つの階層のいずれか) を含む他のいくつかのディメンションに対して値をロールアップします。

私は次のようにこれを行いました:

MEMBER [Measures].[Other Count2]
AS
SUM(
    EXISTING [Person].[Staff Code].[Staff Code].Members,
    IIF([Measures].[Other Count] > 0, 1, NULL)
)

ただし、不要な複数のカウントを避けるために、さらにいくつかの派生メジャーを作成する必要があります。相互に派生し、すべて Person レベルで行います。クエリの速度が 1 秒未満から 1 分以上に低下します (私の目標は 3 秒未満です)。

すべての派生の理由は、相互に排他的な 6 つの列のどれで人が報告されるかを決定するための多くのロジックです。

Cube 計算も作成しようとしましたが、これは [Other Count] と同じ値になります。

SCOPE (({[Person].[Staff Code].[Staff Code].MEMBERS}, [Measures].[Has Other Qual]));
    THIS = ([Person].[Staff Code].[Staff Code], [Measures].[Has Other Qual]).Count;
END SCOPE; 

使用できるより優れた MDX/Cube 計算はありますか、またはパフォーマンスを改善するための提案はありますか?

残念ながら、MDX を使用するのはこれが初めてで、締め切り間際にこの問題に遭遇したため、可能な限りキューブを変更せずにこの問題を解決しようとしています。

4

1 に答える 1

1

キューブを変更することで問題を解決しましたが、これは予想よりも簡単でした。

データ ソース ビューで、既存のファクト テーブルを Person レベルで要約する名前付きクエリを作成しました。また、レポートに必要なすべての列を導き出します。

この名前付きクエリを別のファクト テーブルとして扱い、それにメジャー グループを追加すると、すべての問題が解決しました。

于 2012-04-26T10:10:18.900 に答える