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?

サブジェクト領域の定義

この章では、サブジェクト領域を定義する方法について説明します。ここでは、以下のトピックについて説明します。

Note:

現在のリリースでは、サブジェクト領域のリレーションシップを非表示にすることはできません。名前付きセットおよび計算メンバ (計算メジャーを含む) の非表示、追加、およびオーバーライドを行うには、スタジオを使用します。“サブジェクト領域クラスのリファレンス情報” を参照してください。

"DeepSee 上級モデリング・ガイド" の “複合キューブの定義” も参照してください。

アーキテクトのサブジェクト領域の概要

ここでは、キューブではなくサブジェクト領域を表示している場合のアーキテクトの表示内容について説明します。

  1. [開く][サブジェクト領域][AsthmaPatients][OK] をクリックします。

    これで、キューブの表示と同様のページが表示されます。ただし、キューブとは異なり左側にクラス・ビューワは表示されません。

    generated description: arch subjarea orientation

モデル・ビューワ

左の領域はモデル・ビューワで、サブジェクト領域に定義されたオーバーライドが表示されます。以下はその例です。

generated description: arch subjarea model viewer

このサブジェクト領域ではオーバーライドやリストを定義しません (多くのサブジェクト領域には、フィルタのみが組み込まれています)。

ここでは、オーバーライドの追加、編集のための既存のオーバーライドの選択、およびオーバーライドの削除を実行できます。

新規リストを定義することもできます。

詳細領域

右の領域は、詳細領域で、モデル・ビューワで現在選択されている要素の詳細 (選択されている場合)、またはサブジェクト領域の詳細 (選択されていない場合) が表示されます。

以下はその例です。

generated description: arch subjarea details area

サブジェクト領域の定義

サブジェクト領域を定義する手順は以下のとおりです。

  1. アーキテクトで、[新規作成] をクリックします。

  2. [サブジェクト領域] をクリックします。

  3. 少なくとも、以下の情報は入力してください。

    • [サブジェクト領域名] — 既定のキャプションとして使用したり、クエリで使用するサブジェクト領域の名前。

    • [サブジェクト領域のクラス名] — サブジェクト領域クラスの完全なパッケージおよびクラス名。

    • [ベース・キューブ] — このサブジェクト領域の基となるキューブの論理名。

      キューブ名は入力することも、[参照] をクリックしてキューブを選択することもできます。

      また、キューブのコンマ区切りリストも使用できます。"DeepSee 上級モデリング・ガイド" の “複合キューブの定義” を参照してください。

    その他のオプションは、この章の後続部分で説明します。

    クラス名のほか、サブジェクト領域の作成後はすべてのオプションを編集できます。

  4. [OK] をクリックします。

  5. アーキテクトでサブジェクト定義をクリックして選択します。その後で、詳細領域[依存] オプションを編集します。値として、このサブジェクト領域の基となるキューブ・クラスの完全なパッケージとクラス名を指定します。

    サブジェクト領域クラスは常に、キューブ・クラスの後にコンパイルする必要があります。これを制御するには、[依存] 設定が役に立ちます。

  6. 必要に応じて、サブジェクト領域を保存します。そのためには、以下の操作を実行します。

    1. [保存] をクリックします。

    2. [OK] をクリックします。

    これで、クラスが作成されます。

または、付録 “サブジェクト領域クラスのリファレンス情報” の説明に従ってクラスを手動で作成します。

サブジェクト領域のフィルタ処理

ほとんどの場合、データへのアクセスの制御にはサブジェクト領域を使用します。このような場合は、サブジェクト領域にフィルタを指定します。このためには、以下のいずれかまたは両方を実行します。

  • ハードコードされたフィルタを指定することができます。そのためには、アーキテクトの [フィルタ] オプションで値を指定します。このオプションで、このサブジェクト領域のフィルタとして使用する MDX フィルタ式を指定します。

    ここでは、ハードコードされたフィルタを作成する方法について説明します。

  • 値が実行時に決定されるフィルタを指定できます。そのためには、サブジェクト領域クラスの %OnGetFilterSpec() メソッドをカスタマイズします。このメソッドは、ハードコードされたフィルタが存在する場合は、そのフィルタにアクセスして変更することができます。

    詳細は、"DeepSee 上級モデリング・ガイド" の “キューブまたはサブジェクト領域の動的フィルタ処理” を参照してください。

Note:

以下のサブセクションは、サブジェクト領域のフィルタだけではなく、MDX フィルタ一般に適用されます。

アナライザでのフィルタの構築とモデルへのコピー

MDX に習熟していない場合、最も簡単にフィルタ式を指定する方法は以下のとおりです。

  1. "DeepSee アナライザの使用法" の説明に従って、ドラッグ・アンド・ドロップによりフィルタを作成します。

  2. クエリ文字列ボタン generated description: button query text をクリックします。

    アナライザに以下のようなテキストが示されたダイアログ・ボックスが表示されます。

    SELECT FROM [PATIENTS] WHERE [AGED].[H1].[AGE GROUP].&[0 TO 29]
    
  3. アナライザでのそれまでの実行内容によっては非常に複雑になる場合があるため、WHERE の前のテキストはすべて無視します。WHERE 以降のすべてのテキストを、システムのクリップボードまたはその他の一時的な場所にコピーします。

  4. コピーしたテキストをサブジェクト領域の [フィルタ] オプションに貼り付けます。

    以下はその例です。

    [AGED].[H1].[AGE GROUP].&[0 TO 29]
    

フィルタ式の作成

ここでは、フィルタ式の一般的な形式について説明します。

"DeepSee MDX リファレンス" も参照してください。

単純なフィルタ

単純なフィルタは、単一のメンバを参照します。

[AGED].[H1].[AGE GROUP].&[0 TO 29]

このフィルタは年齢範囲が 0 ~ 29 歳の患者のみにアクセスします。

上記の式は MDX メンバ式です。以下の詳細に注意してください。

  • [AGED] はこのサンプルのディメンジョンです。

  • [H1] は、このディメンジョンの階層です。

  • [AGE GROUP] はこの階層のレベルです。

  • [0 TO 29] は、このレベルのメンバのキーです。

    上記のメンバ式は、[AGED] ディメンジョン、[H1] 階層、 [AGE GROUP] レベルの [0 TO 29] メンバを参照します。

また、以下のさまざまな時間節約の可能性も考慮してください。

  • これらの ID は、いずれも適宜大文字、小文字、大文字と小文字の混合で指定できます。MDX では大文字と小文字は区別されません。

  • スペース文字を含まない ID はすべて、角括弧を省略できます。

  • 生成される式が曖昧にならなければ、階層およびレベル名は省略できます。

    ディメンジョン名は必ず含める必要があります。

  • メンバ・キーではなく、メンバ名を使用することもできます。ほとんどの場合、これは、メンバ ID からアンド記号 (&) を単純に省略できることを意味します。

メンバ・セットによるフィルタ

複数のメンバが必要な場合もあります。以下はその例です。

{[aged].[h1].[age group].[0 to 29],[aged].[h1].[age group].[30 to 59]}

このサブジェクト領域は、セットの要素のいずれかに属するファクト・テーブルのすべてのレコードが含まれるようにフィルタ処理されます。このサブジェクト領域は、年齢が 0 ~ 29 歳のグループの患者と年齢が 30 ~ 59 歳のグループの患者、つまり 60 歳未満のすべての患者を対象とします。

Important:

このリストは中括弧で囲まれることに注意してください。これは、リストが MDX のセットであることを示します。セットとは、要素の結合です。

タプルによるフィルタ

複数の同時基準を満たすレコードのみを検出することが必要な場合もあります。この場合はタプル式を使用します。以下はその例です。

([aged].[h1].[age group].[60+],[diagd].[h1].[diagnoses].[diabetes])

このサブジェクト領域は、60 歳以上の糖尿病の患者を対象とします。

Important:

このリストは括弧で囲まれることに注意してください。これは、リストが MDX のタプルであることを示します。タプルは、要素の共通部分です。

複数のタプルによるフィルタ

1 つのセット内に複数のタプル式をリストすることができます。以下はその例です。

{([aged].[h1].[age group].[60+],[diagd].[h1].[diagnoses].[diabetes]),
([colord.].[h1].[color].[red],[allergd].[h1].[allergy].[soy])}

このサブジェクト領域は、以下の基準の 1 つ以上を満たすすべての患者を対象とします。

  • 60 歳以上で糖尿病のある患者。

  • 大豆アレルギーがあり、好きな色が赤である患者。

その他のサブジェクト領域オプションの指定

前述のオプション以外に、サブジェクト領域では以下の追加オプションを指定できます。

  • [無効] — (オプション) このチェック・ボックスにチェックを付けると、オーバーライドは無効になります。サブジェクト領域のリコンパイル時には、このオーバライドは無視され、DeepSee はキューブで指定された定義を使用します。

  • [表示名] — サブジェクト領域のローカライズ可能な名前。

  • [説明] — (オプション) サブジェクト領域のクラス定義に追加するコメント。クラス定義の開始時に、各行が個別のコメント行として保存されます。

  • [既定のメンバ] — (オプション) クエリが軸をスキップする際に使用する既定のメンバ。このサブジェクト領域でアクセス可能なメンバを返す MDX 式を指定します。メンバ式の詳細は、"DeepSee MDX リファレンス" を参照してください。これを指定しない場合は、キューブに定義されている既定のメンバが使用されます。

  • [デフォルトの詳細リスト] — (オプション) サブジェクト領域の既定のリストの論理名。このリストはキューブ、またはサブジェクト領域で定義する必要があります。これを指定しない場合は、キューブに定義されている既定のリストが使用されます。

  • [所有者] — (オプション) キューブの所有者を指定します。Caché のユーザ名を指定します。

  • [カウント・メジャーのキャプション] — (オプション) Count メジャーの代替名を指定します。

  • [リソース] — (オプション) サブジェクト領域を保護する Caché リソースを指定します。

    これの使用法については、"DeepSee 実装ガイド" の “セキュリティの設定” を参照してください。

  • [キャプション] — (オプション) このキューブでの作業時にアナライザおよびその他のユーティリティに表示されるキャプションを指定します。

  • [ドメイン] — (オプション) サブジェクト領域のローカライズ文字列を含むドメインの名前を指定します。すべてのキューブおよびサブジェクト領域に単一のドメインを使用すると便利な場合があります。また、キューブおよびサブジェクト領域ごとに別のドメインを設定することが適切な場合もあります。"DeepSee 実装ガイド" の “ローカライズの実行” の章を参照してください。

サブジェクト領域への項目の追加

サブジェクト領域にオーバーライドまたはリストを追加するには、以下の一般的な手順を使用します。

  1. [追加] をクリックします。

    キューブの項目を選択できるダイアログ・ボックスが表示されます。

    generated description: subjarea override type

    サブジェクト領域で項目に対するオーバーライドが既に定義されている場合、このダイアログ・ボックスではその項目にチェック・マークが表示されています。

  2. [メジャー][ディメンジョン]、または [リスト] をクリックします。

    [メジャー] では、キューブで定義されている任意のメジャーをオーバーライドできます。

    [ディメンジョン] では、キューブで定義されている任意のディメンジョン、階層またはレベルをオーバーライドできます。

    [リスト] では、キューブで定義されている任意のリストをオーバーライドできます。リストを追加することもできます。

  3. オーバーライドする項目をクリックしてから、[OK] をクリックします。

    項目が追加され、モデル・ビューワにこれらが表示されて、その詳細が詳細領域に表示されます。

  4. 詳細領域で詳細を編集します。

メジャーのオーバーライドの定義

1 つ以上のメジャーにオーバーライドを定義する方法は以下のとおりです。

  1. 必要に応じて、モデル・ビューワでメジャー名をクリックして、新しいオーバーライドを追加する場所を示します。

    この操作を行うと、クリックしたメジャーの前に新しいオーバーライドが追加されます。

  2. [追加] をクリックします。

  3. [メジャー] をクリックします。

  4. オーバーライドするメジャーをクリックしてから、[OK] をクリックします。

    メジャーが追加され、モデル・ビューワにそれらが表示されます。

  5. メジャーのオーバーライドを定義するには、モデル・ビューワでメジャー名をクリックし、詳細領域で以下のオプションを編集します。これらはすべてオプションです。

    • [隠し] — チェックを付けると、このサブジェクト領域内でこのメジャーが非表示になります。チェックを外すと、このサブジェクト領域でこのメジャーを使用できます。

    • [表示名] — キューブで定義された表示名を置換する、新しい表示名を指定します。

    • [説明] — キューブで定義された説明を置換する、新しい説明を指定します。

    • [形式文字列] — キューブで定義された形式文字列を置換する、新しい形式文字列を指定します。このドキュメント内で前述の “形式文字列の指定” を参照してください。

Note:

この方法では、計算メジャーにオーバーライドを定義することはできません。計算メジャーは、実際には計算メンバなので、オーバライドを定義するにはスタジオを使用する必要があります。

ディメンジョン、階層またはレベルのオーバーライドの定義

1 つ以上のディメンジョン、階層またはレベルにオーバーライドを定義する方法は以下のとおりです。

  1. [追加] をクリックします。

  2. [ディメンジョン] をクリックします。

    キューブのディメンジョン、階層およびレベルが以下のように表示されます。

    generated description: subjarea dimension

  3. オーバーライドする項目をクリックしてから、[OK] をクリックします。

    項目が追加され、モデル・ビューワにそれらが表示されます。

    ディメンジョン、階層およびレベルの任意の組み合わせをクリックできます。ディメンジョンではなく、そこに含まれる階層をクリックした場合は、常にディメンジョンも追加されます (ディメンジョンは階層定義の一部であるため)。同様に、階層やディメンジョンではなく、そこに含まれるレベルをクリックした場合は、常に階層およびディメンジョンも追加されます。

  4. 項目のオーバーライドを定義するには、モデル・ビューワで項目名をクリックし、詳細領域で以下のオプションを編集します。これらはすべてオプションです。

    • [隠し] — チェックを付けると、このサブジェクト領域内でこの項目が非表示になります。チェックを外すと、このサブジェクト領域でこの項目を使用できます。

    • [表示名] — キューブで定義された表示名を置換する、新しい表示名を指定します。

    • [説明] — キューブで定義された説明を置換する、新しい説明を指定します。

    • [ソート] (レベルのみ) — このレベルのメンバに対して別の並べ替え順序を指定します。

      Note:

      特定のサブジェクト領域でレベルの並べ替え属性を変更した場合、その変更はキューブを再構築するまで有効になりません。

リストの再定義または新規リストの追加

サブジェクト領域で、リストの再定義、または新規リストの定義を行う手順は以下のとおりです。

  1. 必要に応じて、モデル・ビューワでリスト名をクリックして、新しいオーバーライドを追加する場所を示します。

    この操作を行うと、クリックしたリストの前に新しいオーバーライドが追加されます。

  2. [追加] をクリックします。

  3. [リスト] をクリックします。

    キューブおよびサブジェクト領域のリストが以下のように表示されます。

    generated description: subjarea listing

  4. 必要に応じて、再定義するリストをクリックします。

  5. 必要に応じて、下部のボックスに新しいリストの名前を入力します。

  6. [OK] をクリックします。

    リスト (定義なし) が追加され、モデル・ビューワにそれらが表示されます。

  7. リストを定義するには、モデル・ビューワでリスト名をクリックし、詳細領域でオプションを編集します。

    詳細は、“リストの定義” の章を参照してください。

サブジェクト領域のコンパイル

アーキテクトでサブジェクト領域クラスをコンパイルする手順は以下のとおりです。

  1. [コンパイル] をクリックします。

    ダイアログ・ボックスが表示されます。

  2. [コンパイル] をクリックします。

    クラスのコンパイルが開始され、その進捗状況が表示されます。

  3. [OK] をクリックします。

または、スタジオでサブジェクト領域クラスを開き、他のクラスのコンパイルと同じ方法でこれをコンパイルします。

Tip:

サブジェクト領域クラスをコンパイルする前に、依存しているキューブ・クラスをコンパイルする必要があります。スタジオを使用してサブジェクト領域クラスを編集し、DependsOn キーワードを追加して、それらのクラスが正しい順序でコンパイルされるように強制すると便利です。ただし、必ずそうする必要があるわけではありません。付録 “サブジェクト領域クラスのリファレンス情報” の “サブジェクト領域クラスの要件” を参照してください。

FeedbackOpens in a new tab