%NOT (MDX)
特定のレベルの単一のメンバを除外できます。この関数は、インターシステムズによる MDX への拡張機能です。
返りタイプ
この関数は、メンバを返します。
構文および詳細
member_expression.%NOT
以下は、この指定の説明です。
-
member_expression は、メンバ ID です(一般のメンバ式は使用できません)。
この関数を使用すると、指定したメンバを除外できます。
例
多くの場合は、WHERE 節によって単一のメンバを除外する必要があります。例えば、まず以下のクエリを考えてみます。EXCEPT を使用しています。
SELECT aged.[age bucket].MEMBERS ON 1 FROM patients WHERE EXCEPT(aged.[age group].MEMBERS,aged.[age group].[0 to 29])
1 0 to 9 *
2 10 to 19 *
3 20 to 29 *
4 30 to 39 166
5 40 to 49 139
6 50 to 59 106
7 60 to 69 86
8 70 to 79 62
9 80+ 41
%NOT 関数を使用して、前のクエリを以下のように書き換えることができます。
SELECT aged.[age bucket].MEMBERS ON 1 FROM patients WHERE aged.[age group].[0 to 29].%NOT
1 0 to 9 *
2 10 to 19 *
3 20 to 29 *
4 30 to 39 166
5 40 to 49 139
6 50 to 59 106
7 60 to 69 86
8 70 to 79 62
9 80+ 41
この関数を列軸または行軸に使用すると、この関数がメンバを返すことを確認できます。
SELECT aged.[age group].[0 to 29].%NOT ON 1 FROM patients
Not 0 to 29 600
このように、メンバの名前として、NOT の後に除外するメンバの名前を指定します。
%NOT 関数には、いくつかの利点があります。
-
システムは、そのレベルのすべてのメンバを実体化する必要がなくなります。
-
効率を上げるために、処理の初期部分で否定が行われます。
-
%NOT は、単純なタプル式を形成するために、他のフィルタと (内部的に) 結合できる単一のメンバを返します。