5

キューブにメジャー があり、fooユーザーが次のメジャーをレポートに表示する必要があるとします。

total foo
total foo excluding instances where foo > 10
total foo excluding instances where foo > 30

これを処理する最善の方法は何ですか? NULL過去に、私は名前付きの計算を追加しましfoo > 10foo。MDXでこれを達成する方法が必要だと感じています(のようなものですFilter([Measures].[foo], [Measures].[foo] > 10))が、私の人生では何も理解できません.

何か案は?

4

3 に答える 3

3

トリックは、メジャーではなく、セットにフィルターを適用する必要があることです。

たとえば、通常の Microsoft 'warehouse and sales' デモ キューブを使用すると、次の MDX は、売上高が $2000 を超えたすべての店舗の売上高を表示します。

SELECT Filter([Store].[Stores].[Store].members, [Unit Sales] > 2000) ON COLUMNS,
【販売台数】ON ROWS
FROM [倉庫・販売]
于 2009-11-20T16:13:04.983 に答える
2

「メジャーにフィルターを追加」の明確な解決策が見つからなかったため、saiku (Mondrain のバックエンド) を使用するときに同様の問題に遭遇しました。ここに追加しました。それは他の人に役立つかもしれません。

Saiku3.8 では、UI にフィルターを追加できます: "column"->"filter"->"custom" すると、フィルター MDX 式が表示される場合があります。

広告のクリック数が 1000 を超えると仮定して、そこに次の行を追加します。

[Measures].[clicks] > 1000

保存して閉じると、クリック数が 1000 を超える検索要素に対してそのフィルターが有効になります。

MDX は以下を好みます (ディメンションとして dt、メジャーとしてクリックを想定すると、クリック数が 1000 を超える dt を見つけたいとします)。

WITH
SET [~ROWS] AS
    Filter({[Dt].[dt].[dt].Members}, ([Measures].[clicks] > 1000))
SELECT
NON EMPTY {[Measures].[clicks]} ON COLUMNS,
NON EMPTY [~ROWS] ON ROWS
FROM [OfflineData]
于 2016-12-27T08:37:51.880 に答える
0

あなたには2つの選択肢があると思います:

1- 次のように、ファクト (またはファクト テーブルに基づくデータ ソース ビューのビュー) に列を追加します。

case when unit_Price>2000 then 1 
     else 0  
end as Unit_Price_Uper_Or_Under_10 

この列の値に基づいて架空のディメンションを追加します。新しいディメンションの名前付きクエリを追加します(datasourceviewのRange_Dimensionと言います:範囲として1を選択しますユニオンすべて範囲として0を選択します

その後、他のディメンションや属性のようにこのフィルターを使用することはできません。

 SELECT [Store].[Stores].[Store].members ON COLUMNS,
[Unit Sales] ON ROWS
FROM [Warehouse and Sales]
WHERE [Test_Dimension].[Range].&[1]

問題は、条件を追加する必要があるすべての範囲でありWhen、範囲が静的である場合にのみ、このソリューションは適切なソリューションです。ダイナミックレンジについては、範囲を定式化することをお勧めします(離散化方法に基づいて)

2-たとえば、主キーを持つファクトテーブルがある場合、ファクトテーブルに基づいてファクトテーブルの近くに粒度を持つディメンションを追加しますSale_id。1つの列のみを持つファクトテーブルに基づいてディメンションを追加でき、sale_Idこれをリレーションタイプとdimension Usage tab 関連付けることができ、その後でmdx のようなものを使用できます:new dimensionmeasure groupFact

filter([dim Sale].[Sale Id].[Sale Id].members,[Measures].[Unit Price]>2000)
于 2012-07-19T15:32:00.910 に答える