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?

キューブの定義

この章では、キューブの定義に関する基本的な事項について説明します。ここでは、以下のトピックについて説明します。

Important:

キューブのビルド時や詳細リストの実行時に、DeepSee は SQL を使用してデータにアクセスします。モデルが SQL 予約語のクラス・プロパティを参照する場合は、区切り識別子のサポートを有効にして、DeepSee がプロパティ名をエスケープできるようにする必要があります。予約語のリストは、"Caché SQL リファレンス" の "予約語" を参照してください。区切り識別子のサポートの有効化に関する詳細は、"Caché SQL の使用法" の “識別子” を参照してください。

キューブの定義

キューブを定義する手順は以下のとおりです。

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

    新しいキューブの詳細を入力するダイアログ・ボックスが表示されます。

  2. [キューブ] をクリックします。

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

    • [キューブ名] — クエリで使用するキューブの論理名。

    • [キューブのクラス名] — キューブ・クラスの完全なパッケージおよびクラス名。

    • [ソースクラス] — このキューブのベース・クラスの完全なパッケージおよびクラス名。詳細は、サブセクション “キューブに使用可能なソース・クラス” を参照してください。

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

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

    キューブ・クラスのクラス名のほか、キューブの作成後はすべてのキューブ・オプションを編集できます。

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

  5. 必要に応じて、キューブを保存します。そのためには、以下の操作を実行します。

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

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

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

ユーティリティを使用してキューブ・クラスを生成することもできます。これについては、この後のサブセクションで説明します。

または、付録 “キューブ・クラスのリファレンス情報” の説明に従ってクラスを手動で作成します。

キューブ・クラスの生成

クラス %DeepSee.WizardUtilsOpens in a new tab は、キューブ・クラスの生成に使用できるメソッドを提供します。メソッドは、以下のとおりです。

classmethod %GenerateCubeDefinition(pSourceClass As %Library.String(MAXLEN="")="", 
                                    pCubeName As %Library.String(MAXLEN=""), 
                                    pCubeClass As %Library.String(MAXLEN="")="", 
                                    pAutoDelete As %Library.Integer = 0)

以下は、この指定の説明です。

  • pSourceClass は、キューブのソース・クラスのフルネームです。

  • pCubeName は、キューブの論理名です。

  • pCubeClass は、キューブ・クラスのフルネームです。

  • pAutoDelete は、キューブ・クラスが既存の場合に削除するかどうかを制御します。この引数が非ゼロの場合、クラスは削除されます。ゼロの場合、削除されません。

このメソッドは、以下のようにキューブ定義を生成します。

  • ソース・クラスの数値プロパティごとに 1 つのメジャーがあります。

  • ソース・クラスの日付プロパティごとに 1 つの日付ディメンジョンがあります。このディメンジョンには、3 つのレベルを持つ階層が 1 つあります。3 つのレベルとは、年、年月、および日付です。

  • ソース・クラスの他のプロパティごとに 1 つのデータ・ディメンジョンがあります。このディメンジョンには、1 つのレベルを持つ階層が 1 つあります。

  • ソース・クラスのすべてのプロパティを使用する 1 つのリストがあります。

このメソッドでは、一時プロパティおよび多次元プロパティは無視されます。

キューブのベース・クラスの変更

まれに、キューブのベース・クラスを変更する必要性が生じる場合があります。そのためには、アーキテクトで以下のいずれかの操作を実行します。

  • 詳細領域で、キューブの [ソースクラス] オプションを編集します。

  • [クラス・ビューワ] の最上部の [ソース値] の横にある [変更] リンクをクリックします。

    この処理でダイアログ・ボックスが表示され、ソース・クラスを選択できます。これは、“使用可能なソース・クラス” で表示されているものと同じダイアログ・ボックスです。

この後、モデルのすべての部分でソース・プロパティまたはソース式を適切に変更することを忘れないでください。

キューブに使用可能なソース・クラス

アーキテクトで、[ソースクラス] の横にある [参照] をクリックすると、以下のようなダイアログ・ボックスが表示されます。

generated description: arch source class finder

ここでは、このネームスペースのキューブのソースとして使用可能な任意のクラスを選択できます。この方法で使用可能なクラスには以下の 3 タイプがあります。

  • 永続クラス — %Library.PersistentOpens in a new tab を拡張するクラス。

  • データ・コネクタ・クラス — %DeepSee.DataConnectorOpens in a new tab を拡張するクラス。データ・コネクタは、任意の SQL クエリの結果を、キューブのソースとして使用可能なオブジェクトにマップします。データ・コネクタは、通常は外部の非 Caché データにアクセスしますが、データ・コネクタを使用して Caché に対する SQL クエリ (ビューに対する SQL クエリを含む) を指定することもできます。

    データ・コネクタに基づくキューブでは、そのキューブ内のすべてのリストもデータ・コネクタに基づく必要があります。また、それらのすべてのデータ・コネクタは、idkey="true" としてマークされた同じプロパティを持つ必要があります。これは、基礎となるメカニズムがいずれの場合も同じ ID 値を使用するためです。

    詳細は、"DeepSee 実装ガイド" の “データ・コネクタの定義と使用” を参照してください。

  • コレクション・クラス。

他のキューブ・オプション

アーキテクトでは、以下のキューブ・オプションを指定できます。

  • [キューブ名] — クエリで使用するキューブの論理名。

  • [表示名] — キューブのローカライズ可能な名前。この名前を指定しない場合、代わりに論理名が表示されます。

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

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

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

  • [ソースクラス] — このキューブのベース・クラスの完全なパッケージおよびクラス名。

  • [ヌル置換文字列] — (オプション) レベルのソース・データが NULL の場合にメンバ名として使用する文字列 (例 : None) を指定します。

    レベルでは、同名のレベル・オプションを使用してこのオプションをオーバーライドできます。

  • [デフォルトの詳細リスト] — (オプション) このキューブの既定のリストの論理名。このリストはキューブで定義する必要があります。

  • [リソース] — (オプション) キューブを保護する Caché リソースを指定します。

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

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

  • [カウント・メジャーの名前] — (オプション) Count メジャーの代替名を指定します。既定は %COUNT です。複合キューブを作成する場合は、Count メジャーの名前を変更すると便利です。"DeepSee 上級モデリング・ガイド" を参照してください。

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

  • [初期ビルド順] — (オプション) キューブ全体を構築する際に使用するオプションの ORDER BY 節を指定します。キューブの同期化およびインクリメンタル更新には影響しません。ソース・テーブルのフィールドのコンマ区切りリストを指定します。SQL キーワード ASC および DESC を使用できます。例 : Age DESC,Gender

    このオプションの意味については、"DeepSee 実装ガイド" の “キャッシュのバケットとファクトの順序” のセクションを参照してください。

  • [ビルド制限] — (オプション) キューブの構築および更新時に使用するオプションの WHERE 節を指定します。これにより、キューブがレコードのサブセットを使用するようになります。ソース・テーブルのフィールドを使用する SQL 比較式を指定します。例 : Gender='F'

    キューブがデータ・コネクタに基づいている場合、このオプションは何の効果も持ちません。

    代替オプションの詳細は、"DeepSee 上級モデリング・ガイド" で “キューブおよびサブジェクト領域の高度な機能の使用” の章の “キューブで使用するレコードの制限” を参照してください。

  • [依存] — (オプション) このクラスをコンパイルする前に実行可能にする必要がある 1 つ以上のクラスを指定します。このオプションは、アーキテクトが DependsOn コンパイラ・キーワードをどのように設定するかを制御します。

    既定では、このオプションは空白です。この場合、DeepSee は自動的に DependsOn キーワードを、キューブのソース・クラスの名前と等しくなるように設定します。場合によっては (例えば、キューブ間のリレーションシップによって)、追加のクラスを指定する必要があります。

    このオプションを指定する必要がある場合は、コンマで区切られたクラスのリストを指定して、そのリスト内の各クラスの完全なパッケージ名とクラス名を指定します。このリストには、キューブのソース・クラスが含まれている必要があります。

    キューブ間のリレーションシップの詳細は、"DeepSee 上級モデリング・ガイド" を参照してください。

キューブへの項目の追加

アーキテクトでは、以下の 2 つの一般的な方法でキューブに項目を追加できます。

  • [要素の追加] リンクの使用。以下の操作を行います。

    1. モデル・ビューワ上部の [要素の追加] をクリックします。

      追加する項目の種類を選択できるダイアログ・ボックスが表示されます。

    2. 項目名を入力します。

    3. 項目の種類をクリックします。

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

  • ドラッグ・アンド・ドロップ操作の使用。以下の操作を行います。

    1. クラス・ビューワからプロパティ名をドラッグします。

    2. この名前をモデル・ビューワの見出しにドロップします。名前をどこにドロップするかによって結果が異なります。例えば、プロパティ名を [メジャー] の見出しにドラッグ・アンド・ドロップするとメジャーが作成されます。

いずれの場合も、項目が追加されてモデル・ビューワに表示されます。次に、詳細領域で変更を加えることができます。

以下のテーブルは、さまざまな種類のキューブの項目について説明する、このドキュメント内の参照先を示しています。これらのセクションにも、プロパティ名をドラッグ・アンド・ドロップする場所に関して固有の情報が記載されています。

項目タイプ 参照先の章
データ・ディメンジョン ディメンジョン、階層およびレベルの定義
時刻ディメンジョン
年齢ディメンジョン
階層
レベル
プロパティ プロパティの定義
メジャー メジャーの定義
リスト リストの定義
リスト・フィールド リスト・フィールドの定義
計算メンバ 計算メンバの定義
名前付きセット 名前付きセットの定義

モデル要素の名前

モデル要素を定義する際は、その要素の論理名を指定します (アーキテクト[名前] フィールド)。この名前は MDX クエリで使用され、またその要素の既定の表示名になります。ここでは、この名前の要件と推奨事項について説明します。

論理名は、以下の規則に従う必要があります。

  • 先頭の文字は、文字 (Latin-1 文字セット)、数字、アンダースコア文字 (_) のいずれかにする必要があります。

  • 先頭以外の文字は、文字、数字、スペース、アンダースコア文字のいずれかにする必要があります。

    名前にスペースを使用した場合、MDX クエリの作成時には名前を角括弧で囲む必要があります。

  • 名前に MDX 予約キーワードを使用することはできません。MDX では予約キーワードの大文字と小文字は区別されません。

論理名は、以下の追加規則にも従う必要があります。

  • 特定の Caché ネームスペース内では、各キューブ名が一意であることが必要です。

  • 特定のキューブ内では、各ディメンジョン名が一意であることが必要です。

  • 特定のディメンジョン内では、各階層名が一意であることが必要です。

  • 特定の階層内では、各レベル名が一意であることが必要です。

    Note:

    キューブ内では、レベル名が一意である必要はありません。ただし、キューブ内に同じ名前のレベルが複数ある場合、[ファクト・テーブルのフィールド名] オプションを指定し、ファクト・テーブル内の各レベルを一意の名前にする必要があります。このドキュメントで後述する “ファクト・テーブル内のフィールド名の指定” を参照してください。

  • 特定のレベル内では、各プロパティ名が一意であることが必要です。

  • 内部プロパティの名前は大文字と小文字が区別されない予約キーワードであるため、ユーザ指定のプロパティの名前として使用できませんが、1 つだけ例外があります。その例外とは、Name (大文字と小文字は区別されない) というプロパティで [メンバ名として使用] オプションも有効になっている場合は、このプロパティを作成できるというものです。

    内部プロパティのリストについては、"DeepSee MDX リファレンス" の “内部プロパティ” を参照してください。

  • 特定のキューブ内では、各メジャー名が一意であることが必要です。

その他の共通オプション

アーキテクトでは、モデル要素を定義する際、その要素に対して以下のオプションも指定できます。

  • [表示名] — (オプション) ユーザ・インタフェースで使用されるこの要素のローカライズ名。この名前を指定しない場合、代わりに論理名が表示されます。

  • [説明] — (オプション) この要素の説明。

  • [無効] — (オプション) このチェック・ボックスにチェックを付けると、その要素は無効 (コンパイラで認識されない) になります。キューブのリコンパイル時は、この要素が無視されます。

  • [追加の説明] — (オプション) この要素に関する追加の注意事項。アーキテクトとスタジオでのみ表示されます。

キューブのコンパイルとビルド

アーキテクトでは、キューブを開発する際、多くの場合はそれらのキューブを複数回にわたってリコンパイルしたり、再構築したりします。概要は以下のようになります。

  • キューブをコンパイルするには、[コンパイル] をクリックします。

    クラスのコンパイルが開始され、進捗状況を示すダイアログ・ボックスが表示されます。

    保存していない変更がある場合は、システムによって保存されます。

    次に [完了] をクリックします。

  • キューブをビルドするには、[ビルド] をクリックします。ダイアログ・ボックスが表示されます。[ビルド] をクリックします。

    キューブのビルドが開始され、その進捗状況が表示されます。そして、[OK] をクリックします。

    これで、アナライザでキューブの使用が可能になります。

詳細は、このドキュメントで後述する “キューブのコンパイルとビルド” の章を参照してください。

アナライザでキューブを開く

キューブを開発するときには、定期的にアナライザを使用して、結果を検証する必要があります。アナライザでキューブを開く手順は以下のとおりです。

  1. [DeepSee][アナライザ][進む] をクリックします。

    Tip:

    既にアナライザが開いている場合は、ページ上部の [アナライザ] リンクをクリックするだけです。

  2. 左領域に検証対象のキューブが表示されていない場合は、[開く] をクリックして、キューブを選択します。

レベルの検証に固有のヒントについては、このドキュメントで後述の “レベルの検証” を参照してください。アナライザの使用に関する一般情報は、"DeepSee アナライザの使用法" を参照してください。

キューブの削除

キューブを削除するには、以下の手順を実行します。

  1. ターミナルで、以下のコマンドを実行します。

     do ##class(%DeepSee.Utils).%KillCube(cubeName)

    cubeName は、削除するキューブの論理名です。このコマンドによって、キューブのキャッシュとインデックスが削除されます。

  2. また、ターミナルで、以下のようにキューブのメタデータを削除します。

     kill ^DeepSee.Cubes("cubes",cubeName)
    

    cubeName は、削除するキューブの論理名です。

  3. 以下のいずれかの方法を使用して、キューブ・クラス (および生成されたクラスとデータ) を削除します。

    • ターミナルで、以下のコマンドを実行します。

       do $system.OBJ.Delete(classname)

      classname は、キューブ・クラスの完全なパッケージおよびクラス名です。以下はその例です。

       do $system.OBJ.Delete("Mypackage.Myclass")
    • スタジオでキューブ・クラスを右クリックして、[削除] を選択します。

    キューブを削除しない場合は、これをリコンパイルおよび再構築します。

FeedbackOpens in a new tab