0

ActivePivot で使用している次の形式の MDX クエリがあります。別の次元 (列) に文字列の一部が存在することによって、(私の行で) 結果をフィルター処理する必要があります。

SELECT
NON EMPTY Hierarchize({[CODE].[CODE].Members}) ON ROWS,
NON EMPTY Hierarchize({Filter([RELEVANCE].Members, InStr([RELEVANCE].CurrentMember.Name, "n/a") > 0)}) ON COLUMNS
FROM [CUBE]
WHERE ([Measures].[contributors.COUNT])

filter/instr を使用すると、このクエリのパフォーマンスが非常に低下します。おそらくすべてのメンバーを「スキャン」しているという点で、それを理解できると思います。

私が望むものを達成する別の方法はありますが、パフォーマンスは向上します。

ありがとう

4

1 に答える 1

2

ディメンションに3つのレベルがあり、最後のレベルに「n / a」が表示されている場合RELEVANCEは、次のように記述できます。

SELECT
NON EMPTY [CODE].[CODE].Members ON ROWS,
NON EMPTY Hierarchize({[RELEVANCE].Levels(0).Members,
                       [RELEVANCE].Levels(1).Members, 
                       Filter([RELEVANCE].Levels(2).Members, InStr([RELEVANCE].CurrentMember.Name, "n/a") > 0)}) ON COLUMNS
FROM [CUBE]
WHERE ([Measures].[contributors.COUNT])

無駄なフィルターチェックの数を減らします。

「n/a」と「notn/a」の2つのメンバーを持つレベルで、キューブに別のディメンションを追加することもできます。

この場合、クエリは次のようになります。

SELECT
NON EMPTY [CODE].[CODE].Members ON ROWS,
NON EMPTY [RELEVANCE].Members ON COLUMNS
FROM [CUBE]
WHERE ([Measures].[contributors.COUNT], [the new dimension].[...].[not n/a])

しかし、これはあなたの合計の価値を変えるでしょう。

于 2012-10-11T12:03:59.457 に答える