%ALL (MDX)
返りタイプ
この関数は、メンバを返します。
構文および詳細
member_expression.%ALL
以下は、この指定の説明です。
-
member_expression は、メンバに評価される式です。
この関数を使用すると、階層内のあるメンバをその階層内の別のメンバと比較する (例えば、ある製品をすべての製品と比較する) 計算メンバを作成できます。
例
以下のような値を計算することが必要になる場合もあります。
-
すべての製品と比較したある製品の割合
-
別の製品と比較したある製品の割合
例えば、以下のクエリは、各年齢グループの患者数と等しい計算メンバを、すべての年齢グループの患者の割合として使用します。
WITH MEMBER MEASURES.[pct age grps] AS 'aged.CURRENTMEMBER/aged.[all patients].%ALL', FORMAT_STRING='#.##'
SELECT {MEASURES.[%COUNT],MEASURES.[pct age grps]} ON 0,
aged.h1.[age group].MEMBERS ON 1 FROM patients
Patient Count pct age grps
1 0 to 29 4,216 0.42
2 30 to 59 4,212 0.42
3 60+ 1,572 0.16
この計算メンバは、AgeD ディメンジョンの現在のメンバとして定義され、そのディメンジョンの All メンバで除算されます。
aged.CURRENTMEMBER/aged.[all patients].%ALL
一方、以下のクエリを考えてみます。ここでは、計算メンバが %ALL 関数を使用しません。
WITH MEMBER MEASURES.[BADpct age grps] AS 'aged.CURRENTMEMBER/aged.[all patients]', FORMAT_STRING='#.##'
SELECT {MEASURES.[%COUNT],MEASURES.[BADpct age grps]} ON 0,
aged.h1.[age group].MEMBERS ON 1 FROM patients
Patient Count BADpct age grps
1 0 to 29 4,216 1.00
2 30 to 59 4,212 1.00
3 60+ 1,572 1.00
この場合、各行の aged.[all patients] の値は、aged.CURRENTMEMBER の値と同じです。これは、この行のメンバが aged.[all patients] と同じ階層に属しているためです。
%ALL 関数が、他の階層のメンバによって指定されるコンテキストを考慮しないことに注意してください (この関数は、この関数で使用するメンバに関連付けられた階層のみを無視します)。以下はその例です。
WITH MEMBER MEASURES.[pct age grps] AS 'aged.CURRENTMEMBER/aged.[all patients].%ALL', FORMAT_STRING='#.##'
SELECT CROSSJOIN(gend.MEMBERS,{MEASURES.[%COUNT],MEASURES.[pct age grps]}) ON 0,
aged.h1.[age group].MEMBERS ON 1 FROM patients
Patient Coun pct age grps Patient Coun pct age grps
1 0 to 29 1,985 0.39 2,231 0.45
2 30 to 59 2,123 0.42 2,089 0.42
3 60+ 926 0.18 646 0.13
ここで、最初の 2 つの Patient Count 列および pct age grps 列は女性患者に対応し、2 番目の 2 つの列は男性患者に対応します。それぞれの pct age grps 列は、その性別の患者数を、その性別のすべての年齢グループに対する割合で示します。
また、%ALL 関数が、その階層のメンバが WHERE 節または FILTER 節で使用されている場合に、これらのメンバを無視しないことに注意してください。つまり、%ALL 関数は、クエリに適用されるすべてのフィルタを全面的に尊重します。以下はその例です。
WITH MEMBER MEASURES.[pct of all ages] AS 'aged.CURRENTMEMBER/aged.[all patients].%ALL', FORMAT_STRING='#.##'
SELECT {MEASURES.[%COUNT],MEASURES.[pct of all ages]} ON 0,
aged.h1.[age group].MEMBERS ON 1 FROM patients
WHERE aged.h1.[age group].[0 to 29]
Patient Count pct of all ages
1 0 to 29 4,216 1.00
2 30 to 59 * *
3 60+ * *