1

SSASのメジャーグループ間に親子関係を実装する方法を理解するのに苦労しています。基本的に、標準のSQL結合を再作成して、子グループのキーを使用しながら親グループのメジャーを検索できるようにしています。

たとえば、次のディメンションがあるとします。

  • 子(FK:ParentID)
  • 時間

そして、私は次のメジャーグループを持っています

  • ParentFact(キー:ParentID、TimeID-時間の経過とともに親に関連するメジャー)
  • ChildFact(キー:ChildID、TimeID-時間の経過に伴う子に関連するメジャー)

ファクトテーブルの特定のディメンションは作成していません。

最後に、次のようなクエリを実行して、親テーブルのメジャーに結合された子テーブルのメジャーを一覧表示します。

SELECT
    {
        [ChildMeasure]
        , [ParentMeasure]        
    } ON COLUMNS
    , [Child].Children ON ROWS
FROM
    [MyCube]
WHERE
    [Time].[100]

このクエリを実行すると、子の行がTime ID 100の適切なメジャー値とともに正しく一覧表示されます。残念ながら、ParentMeasureはすべて同じであり、TimeID100のすべての親のこの値の集計であるように見えます。この列には、TimeID100での各子の関連付けられた親からの値が表示されます。

私はここで何が間違っているのですか?FactTableごとにFactDimensionsを作成し、どういうわけかそれらを関連付ける必要がありますか?データソースビューで親と子の関連付けを作成する必要がありますか?それは私が避けるべきだと思うスノーフレークスキーマになりますか?

ちなみに、私のChildFactテーブルには、実際にはメジャーの1つとしてParentIDが含まれています。これは、データソースのリレーショナルテーブルにあるためです(おそらく、DB開発者による以前の非正規化作業が原因です)。ファクトテーブルで実際にFKであるメジャーを削除する必要がありますか、それとも私がやろうとしていることに何らかの形で必要ですか?

4

2 に答える 2

2

明らかな粒度の問題があるため、単一の Fact テーブルを作成しようとするべきではないと思います。

既存の FK 列を使用して、子ファクトと親ディメンションの間にキューブ定義にディメンションの関係を追加する必要があると思います。

おそらく、ParentID を Measure として有効に使用する唯一の方法は、Distinct Count を取得することです。

于 2012-11-02T02:22:00.527 に答える
1

ここで 2 つのファクトを作成する必要はありません。

  1. 単一の Fact テーブル (ParentID、ChildID、TimeID) を作成する
  2. 3 次元の DimParent、DimChild、DimTime を作成する
  3. ファクト テーブルの FK は、それぞれのディメンション テーブルを参照します
  4. また、ファクトがディメンションでどのようにスライスされるか、属性の関係を確認してください
于 2012-10-28T14:09:44.200 に答える