私は多対多の次元にはかなり慣れていませんが、解決しなければならないシナリオがあり、自分では解決できないいくつかの疑問が生じました。
シナリオは次のとおりです。
- NonLeafDataVisible が設定された再帰的なカテゴリ階層を持つ親子カテゴリ ディメンションがあります。
- ファクト テーブルをスライスする通常の Products ディメンションがあります。
- 2 つの間の関係を定義するブリッジ多対多の ProductCategory テーブルがあります。製品は、カテゴリ階層の任意のレベルに属することができることに注意してください。つまり、特定のカテゴリは、直接割り当てられた製品とサブカテゴリの両方を持つことができます。
- 販売された製品への FK とそのカテゴリへの FK を保持するファクト トランザクション テーブルがあります。FK が必要です。
これらすべてを BIDS でモデル化し、各ディメンションとファクトの間にディメンションの使用法を設定し、カテゴリとトランザクション テーブルの間に多対多の関係を設定します。言い換えれば、すべてが一種のOKのようです..
次のようなレポートを作成するために使用する MDX を作成する必要があります。
Lev1 Lev2 Lev3 Prod Count
-A
-AA 6
-AA 2
P6 1
P5 1
-AAA 2
P1 1
P2 1
-AAB 2
P3 1
P4 1
+BB
次の MDX は、必要なものをほとんど返します。
SELECT
[Measures].[SALES Count] ON COLUMNS,
NONEMPTYCROSSJOIN(
DESCENDANTS([Category].[PARENTCATEGORY].[Level 01].MEMBERS),
[Product].[Prod KEY].[Prod KEY].MEMBERS,
[Measures].[Measures].[Bridge Distinct Count],
[Measures].[SALES Count],
2) ON ROWS
FROM [Sales]
私が抱えている問題は、リーフ以外のカテゴリごとに、クロス結合が、そのカテゴリで販売されている各製品 + すべてのサブカテゴリとの有効な交差を返すことです。したがって、結果セットには冗長なデータが多すぎます。また、SSRS レポート自体で冗長性を除外する方法が見つかりません。
上記の結果セットのみを返すように MDX を書き直す方法についてのアイデアはありますか?
もう 1 つの問題は、トランザクション データを直接スライスするように設定したロールプレイング カテゴリ ディメンションを作成すると、キューブを参照するときに取得する数値が完全にオフになることです... SSAS が処理中に何かをしているように見えます (しかし、そうではありません) OLTPに送信するSQLステートメントはまったく同じままです)、それが問題の原因ですが、何が原因かわかりません。何か案は?
乾杯、アレックス