2011-06-24 19 views
0

OLAPを初めて使用しましたが、2つ以上のエンティティ間でリレーションシップを作成する方法がまだわかりません。SSAS OLAP MDXとリレーションシップ

私はビューで立方体をベースにしています。単純化のための、このようにそれらを呼び出してみましょう:

viewParent(のParentID PK)

viewChild(たchildID PK、のParentID FK)

これらのビューは、複数のフィールドを持っているが、彼らは重要じゃありませんこの質問のために。

私のデータソースでは、リンクのParentIDを使ってviewParentとviewChildの間の関係を定義しました。

対策については、私は親と子のために別々の対策を作成することを余儀なくされました。しかし、MDXクエリでは

という関係はありません。私は親、子供のためのレコード数を選択して、親のためのいくつかのフィルタを追加すると、子の数が

SELECT { 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS 
FROM [Cube] 
WHERE { 
    (
    {[Time].[Month].&[2011-06-01T00:00:00]} 
    ,{[SomeDimension].&[Foo]} 
    ) 
} 

選択ParentCountが正しい..ですそれを反映していないが、ChildCountはフィルタのいずれかに影響されません(親フィルタなので)。しかし、私は関係を定義して以来、どのようにWHERE句を使用して親によって子供をフィルタリングするためにそれを利用することができますか?

事実:

viewParent、viewChild

寸法:

ParentDimensionは ChildDimension(私が凝集したい子ビューからの属性が含まれています(私は上の集約たい親ビューからの属性が含まれています) on)

これは私が思いついたアイデアですが、おそらく私のデザイン/関係はオフです。

+0

ディメンションとファクトの説明を追加すると役立ちます – ic3

答えて

1

それがわかりました。

vs2008のキューブのディメンションタブを見ると、明らかになりました。

ディメンションと測定値との間の関係が正しく設定されていませんでした。私の次元はparentViewのuniqueIDに対応するuniqueIDをキーにしていました。

(SomeDimensionの)関係を(parentViewとchildViewの両方で共有されている)別のIDフィールドのキーに変更して、ViewIDとしましょう。

とMDXクエリが期待どおりに動作するようになりました。意味、WHERE句は両方の測定値グループに影響を与えました:親と子。

0

私はあなたの説明であなたが選んだ言葉をあまりにも詳しく読んでいるかもしれませんが、あなたがフィルターの意味を明確にしたいかもしれません。技術的にWHERE句はフィルタではなく、結果のデータセットの場合はidentifies the slicer axisです。 FILTERを意味する場合は、FILTERという名前のMDX関数を調べて、セット式に適用できます。

MDXクエリを並べ替えて、軸 - 行と列の両方を定義することをお試しください。

SELECT 
{ 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS, 
{ 
    [SomeDimension].&[Foo] 
} ON ROWS 
FROM [Cube] 
WHERE ([Time].[Month].&[2011-06-01T00:00:00]) 
関連する問題