MDXでの計算メンバーの定義-メジャーの値のフィルタリング

StackOverflow https://stackoverflow.com/questions/197407

  •  10-07-2019
  •  | 
  •  

質問

MDXで計算メンバーを定義する必要があります(これはSAS OLAPですが、とにかく異なるOLAP実装で作業している人々からの回答に感謝します)。

新しいメジャーの値は、追加のフィルター条件を適用して既存のメジャーから計算する必要があります。例があればより明確になると思います:

  • 既存の測定:"総トラフィック"
  • 既存のディメンション:" Direction" (" In"または" Out")
  • 「総トラフィック」に等しい計算されたメンバー「着信トラフィック」を作成する必要があります。追加のフィルター(Direction =" In")

問題は、MDXがわからないことと、非常に厳しいスケジュールにあることです(初心者の質問には申し訳ありません)。私が思いつく最高のものは次のとおりです。

([Measures].[Total traffic], [Direction].[(All)].[In])

特定の方向のセルを除いて、ほとんど機能します:

example

つまり、「組み込み」のように見えます。方向のフィルターは、独自のフィルターでオーバーライドされます)。 「真性」の共通部分が必要です。フィルターと自分のもの。私の直感は、評価されるセルの固有の座標との [Direction]。[(All)]。[In] の交差に関係していると感じましたが、それなしで必要なものを知るのは難しいです最初に主題について読んでください:)

[編集]最終的には

IIF([Direction].currentMember = [Direction].[(All)].[Out],
    0,
    ([Measures].[Total traffic], [Direction].[(All)].[In])
)

..しかし、少なくともSAS OLAPでは、基になるデータセットに対して([in]の値を計算するために)追加のクエリが実行されるため、最後には使用しませんでした。

役に立ちましたか?

解決

最初に、MDXで新しい計算されたメジャーを定義し、フィルターを適用して別のメジャーの値を使用するように指示できます。

WITH MEMBER [Measures].[Incoming Traffic] AS
'([Measures].[Total traffic], [Direction].[(All)].[In])'

レポートに新しいメジャーを表示すると、「方向>」のフィルターがあるかのように動作します。方向ディメンションがまったく使用されているかどうかに関係なく、その上に。

しかし、あなたの場合、方向ディメンションを使用して優先順位を指定する必要があります。このディメンションが使用されているかどうかを検出し、それに応じて行動する必要があります。

WITH MEMBER [Measures].[Incoming Traffic] AS
'IIF([Direction].currentMember = [Direction].[(All)].[Out],
    ([Measures].[Total traffic]),
    ([Measures].[Total traffic], [Directon].[(All)].[In])
)'

Dimensionが使用中かどうかを確認するには、現在のセルがOUTを使用しているかどうかを確認します。その場合、Total Trafficをそのまま返すことができます。そうでない場合は、タプルでINを使用するように指示できます。

他のヒント

合計トラフィックファクトテーブルにIN / OUT表示&の列を配置する必要があると思います。 IN&のDimテーブルを作成しますアウト値。その後、IN&に基づいてデータを分析できます。アウト。

この質問、同じ問題を説明し、そこに異なる回答が投稿されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top