集計の追加
ここでは、Business Intelligence で MDX クエリに集計 (平均や合計など) を追加する方法を説明します。
"BI サンプルのアクセス方法" も参照してください。
集計関数の概要
MDX には、指定されたセット全体で、指定された値を集計する関数が用意されています。各関数では、引数はセットとオプションの数値式 (メジャーへの参照など) です。システムにより、式がセットのメンバごとに評価され、単一の値が返されます。数値式が指定されていない場合は、代わりに、クエリ内で使用されているメジャー (場合によっては %COUNT) が評価されます。
関数は以下のとおりです。
-
SUM。値の合計を返します。
-
AVG。平均値を返します。この関数では、式が NULL のメンバは無視されます。
-
MAX。最大値を返します。
-
MIN。最小値を返します。
-
MEDIAN。セットから中央値に最も近い値を返します。
-
STDDEV。値の標準偏差を返します。
-
STDDEVP。値の母標準偏差を返します。
-
VAR。値の分散を返します。
-
VARP。値の母分散を返します。
以下はその例です。
SELECT MAX(diagd.diagnoses.MEMBERS,MEASURES.[%COUNT]) ON 0 FROM demomdx
MAX
828
このクエリは、Diagnoses レベルのメンバの %COUNT メジャーの最大値を示しています。
別の例として、2 番目の引数を指定しないで同じ関数を使用してみます。この場合、クエリでは %COUNT メジャーが列として表示されます。
SELECT MEASURES.[%COUNT] ON 0, MAX(diagd.diagnoses.MEMBERS) ON 1 FROM demomdx
%COUNT
MAX 828
別の例として、クエリ内でメジャーを一切指定しないで同じ関数を使用してみます。
SELECT MAX(diagd.diagnoses.MEMBERS) ON 0 FROM demomdx
MAX
828
この場合は、%COUNT が使用されます。
集計行の追加
集計値だけで表示するよりも、セットのすべての値を表示するクエリにその集計値を含める方が、より一般的です。このプロセスは、スプレッドシートで集計行を (行または列として) 追加することと似ています。
以下の例では、診断ごとの %COUNT メジャーが示され、それに続いて、このセット全体にわたるそのメジャーの最大値が示されています。
SELECT MEASURES.[%COUNT] ON 0,
{diagd.diagnoses.MEMBERS, MAX(diagd.diagnoses.MEMBERS,MEASURES.[%COUNT])} ON 1 FROM demomdx
%COUNT
1 None 828
2 asthma 90
3 CHD 37
4 diabetes 45
5 osteoporosis 22
6 MAX 828
システムでは、まずメンバごとの %COUNT メジャーが、そのメジャーに対して定義された集約メソッドを使用して計算されていることに注意してください。この場合は、患者がカウントされます。例えば、asthma メンバの合計 %COUNT 値は 90 です。その後で、MAX 関数によって、このメジャー (診断のセット全体) の最大値が取得されます。
別の例を示します。
SELECT {gend.gender.MEMBERS, AVG(gend.gender.MEMBERS,MEASURES.[%COUNT])} ON 0,
MEASURES.[%COUNT] ON 1 FROM demomdx
Female Male AVG
%COUNT 488 512 500
集計関数を使用する場合、"セットを使用した作業" で説明したように、名前付きセットを使用すると便利な場合があります。例えば、以下のクエリは前のクエリと同等です。
WITH SET genders AS 'gend.gender.MEMBERS'
SELECT {genders, AVG(genders,MEASURES.[%COUNT])} ON 0, MEASURES.[%COUNT] ON 1 FROM demomdx
集計行を追加するには、表示されるメンバを組み合わせた集計メンバを定義する方法もあります。"計算メジャーおよび計算メンバの作成と使用" の "集計メンバの追加" を参照してください。