1

次のような MDX クエリがあるとします。

SELECT Measure1, Measure2, Measure3 ON COLUMNS
[Region].[Region].[Region] ON ROWS
FROM TheCube

3 つすべてのメジャーが空の行を除外する場合は、高速に動作する SELECT NON EMPTY を使用します。しかし、実際には、Measure3 に値がある場合でも、Measure1 と Measure2 の両方が空の行を除外する必要があります。この特定のキューブでは、Measure3 に常に値があるため、NON EMPTY はまったく効果がありません。

私はそれをできた

SELECT Measure1, Measure2, Measure3 ON COLUMNS
FILTER ([Region].[Region].[Region], 
       NOT (IsEmpty(Measure1) AND IsEmpty(Measure2)) ON ROWS
FROM TheCube

それも機能しますが、永遠に時間がかかります。上記の NON EMPTY クエリよりも桁違いに長くなります。実際、FILTER(..., 1=1) のように常に true になる式でフィルタリングしても、かなりの時間がかかります。

Measure1 と Measure2 の両方が空の行を除外するより効率的な方法はありますか?

4

2 に答える 2

0

結果のクエリを読みやすい方法で再入力するだけです。

SELECT Measure1, Measure2, Measure3 ON COLUMNS
NonEmpty([Region].[Region].[Region], 
         { [Measure1], [Measure2] }) ON ROWS
WHERE -- some filter

WHERE を使用しない場合は、NonEmpty() が正確に何を実行するかを注意深く確認する必要があります。

于 2013-05-20T20:01:00.810 に答える