Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

集計の追加

この章では、MDX クエリに集計 (平均や SMT 合計など) を追加する方法を紹介します。以下のトピックについて説明します。

集計関数の概要

MDX には、指定されたセット全体で、指定された値を集計する関数が用意されています。各関数では、引数はセットとオプションの数値式 (メジャーへの参照など) です。DeepSee では、セットのメンバごとに式が評価され、単一の値が返されます。数値式が指定されていない場合、DeepSee では代わりに、クエリ内で使用されているメジャー (場合によっては %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

この場合、DeepSee では %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

集計行を追加するには、表示されるメンバを組み合わせた集計メンバを定義する方法もあります。これについては、“計算メジャーおよび計算メンバの作成と使用” の章の “集計メンバの追加” を参照してください。

FeedbackOpens in a new tab