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:

時間ディメンジョンおよび年齢ディメンジョンにプロパティを含めることはできません。

プロパティの追加

既存のレベルにプロパティを追加する手順は以下のとおりです。

  1. モデル・ビューワで、レベルまたはそのレベル内のプロパティをクリックします。

    この操作によって、プロパティを追加する場所を示します。

    • レベルをクリックすると、そのレベルの他のすべてのプロパティの後に新しいプロパティが追加されます。

    • プロパティをクリックすると、そのプロパティの直前に新しいプロパティが追加されます。

    Note:

    プロパティがメンバの並べ替えに使用される場合は、レベル内のプロパティの順序が重要になります。前の章の “メンバの並べ替え順序の指定 (データ・レベルの場合)” を参照してください。

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

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

  3. [新規項目名の入力] に、プロパティ名を入力します。

    他の種類のキューブ要素とは異なり、予約済みのプロパティ名があります。詳細は、このドキュメントで前述した “モデル要素の名前” を参照してください。

  4. [プロパティ] をクリックします。

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

  6. モデル・ビューワで、プロパティを選択します。

  7. 詳細領域で、[プロパティ] または [式] の値を指定します。このドキュメント内で前述の “ディメンジョンまたはレベルのソース値の定義” および “ソース式の詳細” を参照してください。

または、クラス・ビューワからクラス・プロパティをドラッグして、これをモデル・ビューワのレベルにドロップします。次に、必要に応じて詳細領域で変更を加えます。

このドキュメント内で前述の “その他の共通オプション” も参照してください。

リスト・ベースのレベルのプロパティの定義

関連付けられているレベルがリスト・ベースである場合、以下のようにプロパティを定義する必要があります。

  • [式] の値を指定します。

  • 式で、%value 変数を参照します。この変数には、関連付けられているリスト要素の値が含まれます。

例えば、Patients キューブの Allergy Severities レベルを考えてみましょう。このレベルには、このレベルのメンバの並べ替え順序を制御するプロパティがあります。このプロパティ (SeveritySort) は、以下の式で定義されます。

%cube.GetSeveritySort(%value)

これにより、キューブ・クラスの GetSeveritySort() メソッドをアレルギー重症度 (文字列) を引数として実行します。メソッドは、整数を返します。

形式文字列の指定

スタジオでは、形式文字列を指定できます。これにより、プロパティの表示形式を指定できます。この形式設定は、アナライザで (または、手動で MDX クエリを作成することで) オーバーライドできます。詳細は、最初の付録の “<property>” を参照してください。

実行時のプロパティの値の取得

場合によっては、プロパティの値が適切なソース・テーブルから実行時に取得されるように、プロパティを定義できます。要件は以下のとおりです。

  • このプロパティに対して [実行時に値を取得] オプションを選択します。

  • 親レベル (取得するプロパティが含まれるレベル) では、そのレベルのソース・プロパティまたはソース式は ID として評価される必要があります。

    システムはそのことを想定して (少なくともこのレベルで)、ソース・データを正規化します。すなわち、そのレベルでは、データは別のテーブルに存在し、ソース・テーブルにはそのテーブルへのリンクが格納されます。

    この要件は、既定では、このレベルのメンバ名が ID であり、通常はユーザによる使用には適していないことを意味します。この場合は、メンバの表示名として使用するため、このレベルのプロパティも構成します。これは、同じプロパティでも別のプロパティでもかまいません。

    前の章の “プロパティ値をメンバ名として使用する方法” を参照してください。

レベル内のプロパティの順序の変更

レベル内のプロパティの順序を変更する手順は以下のとおりです。

  • レベル内でプロパティを上に移動するには、そのレベルの行で上矢印をクリックします。

  • レベル内でプロパティを下に移動するには、そのレベルの行で下矢印をクリックします。

レベル内のプロパティの順序はレベルのメンバの並べ替え順序に影響する場合があります。前の章の “メンバの並べ替え順序の指定 (データ・レベルの場合)” を参照してください。

ディメンジョン・テーブル内の列名の指定

キューブ・クラスのコンパイル時に、DeepSee は 1 つのファクト・テーブル・クラスと、ディメンジョンに関連するクラスを生成します。キューブの構築時に、DeepSee は、これらのテーブルに値を入力します。これについては、“ファクト・テーブルおよびディメンジョン・テーブルの詳細” で説明しています。レベルのプロパティは、それに対応するディメンジョン・テーブルに格納されます。

既定では、DeepSee がファクト・テーブルの列名を生成しますが、その代わりに使用する列名を指定することもできます。これを実行するには、各プロパティの [レベル・テーブルのフィールド名] オプションに値を指定します。一意の名前を使用するように注意してください。

Important:

[ファクト・テーブルのフィールド名] には、SQL の予約語を使用しないでください。SQL 予約語のリストは、"Caché SQL リファレンス" の “予約語” を参照してください。名前は、英字かパーセント記号 (%) で始まる必要があります。最初の文字が % である場合、2 番目の文字は Z または z である必要があります。制限事項の詳細は、"Caché プログラミング入門ガイド" の付録 “識別子のルールとガイドライン” で “クラス・メンバ” を参照してください。また、fact または listing という語は、どのような大文字と小文字の組み合わせであっても使用しないでください。

プロパティの特殊な用途

既定では、プロパティは属するレベルのメンバに何も影響しません。ただし、プロパティを使用して、以下の方法でメンバを変更することができます (方法は組み合わせることもできます)。

  • プロパティ値をメンバ名として使用し、レベル定義で定義された既定のメンバ名をオーバーライドできます。

    そのためには、[メンバ名として使用] オプションおよび、(必要に応じて) [実行時に値を取得] オプションを使用します。前の章の “プロパティ値をメンバ名として使用する方法” を参照してください。

    [メンバ名として使用] を選択し、ソース値が NULL の場合は、適切なヌル置換文字列が使用されることに注意してください。これはレベルまたはキューブのヌル置換文字列 (それぞれ定義がある場合) です。“レベルに対するヌル置換文字列の指定” および “キューブ・オプションの指定” を参照してください。

  • プロパティ値を使用して、レベル内のメンバの既定の並べ替え順序を指定できます。

    そのためには、[プロパティ値によるメンバのソート] オプションを使用します。前の章の “メンバの並べ替え順序の指定 (データ・レベルの場合)” を参照してください。

    範囲式を使用するレベルでは、[プロパティ値を基準にしたメンバの並べ替え] オプションは何の効果もありません。

  • プロパティ値はメンバのツールのヒントとして使用できます。これは、スペースの関係上メンバ名には短い名前を使用する必要があり、同時に各メンバについて十分な情報を提供する必要がある場合に便利です。このようにプロパティを使用するには、isDescription 属性を "true" に指定します。付録 “キューブ・クラスのリファレンス情報” の <property> を参照してください。

Tip:

このドキュメントで前述のセクション “メンバ・キーおよび名前の適切な定義” に記載されているように、レベル内のメンバ名は一意である必要はありません。ただし、適切に定義されたキューブでは、指定されたレベルの各メンバには一意のキーがあります。アナライザでクエリを作成する際、DeepSee は自動的に名前でなくメンバ・キーを使用します。ユーザは、メンバのリストを展開して、同じ名前を持つ異なるメンバを個別にドラッグ・アンド・ドロップすることができます。便宜を考慮して、値がキーのレベル・プロパティを追加することもお勧めします。このようなプロパティでは、レベルで使用されるものと同じソース・プロパティまたはソース式をそのプロパティの基にするだけです。これで、このプロパティを表示して DeepSee がメンバに使用する一意の ID を決定できます。

FeedbackOpens in a new tab