DRILLTHROUGH 文 (MDX)
構文および詳細
DRILLTHROUGH optionalmaxrows select_statement
または、以下のようにします。
DRILLTHROUGH optionalmaxrows select_statement RETURN fieldname1, fieldname2, ...
または、以下のようにします。
DRILLTHROUGH optionalmaxrows select_statement RETURN fieldname1, ... %ORDER BY fieldname3, ...
または、以下のようにします。
DRILLTHROUGH optionalmaxrows select_statement %LISTING [listingname]
以下は、この指定の説明です。
-
optionalmaxrows (オプション) は、MAXROWS integer の形式です。
この引数は、返される行の最大数を指定します。既定値は 1,000 です。
-
select_statement は、SELECT を使用する文です。
-
fieldname1、fieldname2、fieldname3、fieldname4 (以降同様) は、キューブで使用されるベース・クラスにあるフィールドの名前です。
-
listingname は詳細リストの名前です。このリストが既に定義されており、ユーザがそれを使用する権限を持っている必要があります。この名前にスペースが含まれていない場合は、名前を囲む角括弧を省略することができます。リストの名前は大文字と小文字が区別されます。
RETURN 節で、表示するフィールドを指定します。%ORDER BY 節は、MDX に対する InterSystems 拡張機能です。この節が含まれている場合、この節で、表示されているレコードの並べ替え方法を指定します。
%LISTING 節は、もう 1 つの、MDX に対する InterSystems 拡張機能です。この節では、使用するリストを指定します。この節を指定すると、そのリストで指定されているフィールドが表示されます。
RETURN 節または %LISTING 節を指定しないと、クエリは、キューブで定義された既定のリストを使用します。
システムは、内部で SQL クエリを構築して使用します。
SELECT 文が複数のデータ・セルを返した場合、リストに表示されるのは、最初のセルに関連付けられたフィールドのみです。
RETURN および ORDER BY の追加オプション
RETURN 節および %ORDER BY 節では、以下の点に注意してください。
-
矢印構文を使用すると、別のテーブルのプロパティを参照できます。"暗黙結合 (矢印構文)" を参照してください。
-
エイリアスを組み込むことができます。
-
標準的な SQL 関数および InterSystems IRIS® データ・プラットフォーム関数を使用できます。標準的な SQL 関数を使用するには、これを括弧で囲み、関数名がフィールド名と解釈されないようにします。InterSystems SQL 関数は、パーセント文字 (%) が先頭にあるため、括弧で囲む必要はありません。
-
field_name ではなく、source.field_name を使用すると、より高度な SQL 機能を使用できます。
以下はその例です。
... RETURN %ID,%EXTERNAL(Field1) F1,'$'||source.Sales Sales
任意のリストの最初の行は、フィールド名またはそのエイリアスを示すヘッダです。リストの各ヘッダの下にデータ列があります。この場合、列は以下のようになります。
-
%ID — この列には %ID フィールドが表示されます。
-
F1 — この列は、InterSystems SQL %EXTERNAL 関数を使用して、Field1 フィールドの値を DISPLAY 形式で返します。
-
Sales — この列には、Sales フィールドが表示され、先頭にドル記号 ($) が付加されています。
例
最初の例は、RETURN を使用しません。したがって、キューブに定義されている既定のリストが使用されます。
DRILLTHROUGH SELECT homed.Magnolia ON 1 FROM patients
# PatientID Age Gender TestScore HomeCity DoctorGrou
1: SUBJ_10161 0 F 76 3 I
2: SUBJ_10330 0 F 3 II
3: SUBJ_10554 0 F 68 3 II
4: SUBJ_10555 0 F 78 3 II
5: SUBJ_10686 0 F 91 3 I
...
次の例は、MAXROWS 引数を使用します。
DRILLTHROUGH MAXROWS 3 SELECT homed.Magnolia ON 1 FROM patients
# PatientID Age Gender TestScore HomeCity DoctorGrou
1: SUBJ_10161 0 F 76 3 I
2: SUBJ_10330 0 F 3 II
3: SUBJ_10554 0 F 68 3 II
次の例は、RETURN 節を使用します。
DRILLTHROUGH SELECT homed.Magnolia ON 1 FROM patients RETURN Gender, HomeCity->PostalCode
# Gender PostalCode
1: F 34577
2: F 34577
3: F 34577
4: F 34577
5: F 34577
...
次の例は、%ORDER BY 節も使用します。
DRILLTHROUGH SELECT homed.Magnolia ON 1 FROM patients RETURN PatientID, Age, Gender %ORDER BY Age
# PatientID Age Gender
1: SUBJ_101616 0 F
2: SUBJ_102705 0 M
3: SUBJ_103210 0 M
4: SUBJ_103300 0 F
5: SUBJ_103972 0 M
...
最後の例は、2 つのフィールド名で %ORDER BY 節を使用し、順序を指定します。
DRILLTHROUGH SELECT homed.Magnolia ON 1 FROM patients RETURN PatientID, Age, Gender %ORDER BY Gender, Age
# PatientID Age Gender
1: SUBJ_101616 0 F
2: SUBJ_103300 0 F
3: SUBJ_105548 0 F
4: SUBJ_105556 0 F
5: SUBJ_106865 0 F
...
この場合、レコードはまず性別で並べ替えられます。各性別の中で、さらに年齢で並べ替えられます。