リストの定義
この章では、リストを定義する方法を説明します。以下のトピックについて説明します。
スタジオでは、リストの形式設定を定義できます。付録 “キューブ・クラスのリファレンス情報” の “<listing>” を参照してください。
また、個別のリスト・フィールドを定義することもできます。ユーザはアナライザでこのフィールドを使用してカスタム・リストを作成できます。次の章を参照してください。
キューブ定義の外部で (アーキテクトにアクセスすることなく) リストを定義することもできます。“リスト・グループの定義” の章を参照してください。
リストの追加
リストを追加する手順は以下のとおりです。
-
[要素の追加] をクリックします。
ダイアログ・ボックスが表示されます。
-
[新規項目名の入力] に、リスト名を入力します。
このドキュメント内で前述の “モデル要素の名前” を参照してください。
-
[リスト] をクリックします。
-
[OK] をクリックします。
-
モデル・ビューワの [リスト] セクションでリスト名を選択します。
-
必要に応じて、以下の詳細も指定します。
-
[表示名] — リストのローカライズ可能な名前。この名前を指定しない場合、代わりに論理名が表示されます。
-
[説明] — リストの説明。
-
[リスト・タイプ] — リストのタイプ。[テーブル] (既定値) または [マップ] を選択します。
[マップ] を選択する場合、この章で後述する “マップ・リストの定義” のセクションを参照してください。
-
[リソース] — リストを保護する Caché リソースを指定します。
これの使用法については、"DeepSee 実装ガイド" の “セキュリティの設定” を参照してください。
-
-
リストを定義します。手順は後続のセクションを参照してください。
リストを定義するときは、キューブ自体がデータ・コネクタに基づいているかどうかを配慮することが重要です。キューブ自体がデータ・コネクタに基づいている場合は、そのキューブのすべてのリストはデータ・コネクタに基づいている必要があります。
ただし、キューブがデータ・コネクタに基づいていない場合、そのリストはデータ・コネクタに基づくことも、あるいは キューブと同じソース・クラスに基づくこともできます。
単純なリストの定義
単純なリストは、キューブで使用されているソース・テーブルのフィールドを使用します。単純なリストを定義するには、この章の前半で示した説明に従ってリストを追加し、以下のオプションを指定します。
-
[フィールド・リスト] — 表示するソース・テーブル内のフィールドのコンマ区切りリストを指定します。このオプションを指定するには、[フィールド・リスト] の横の検索ボタン をクリックして、フィールドを選択するダイアログ・ボックスを表示します。このようにするとアーキテクトでは以下のように表示されます。
このダイアログ・ボックスを使用する手順は以下のとおりです。
-
必要に応じて、[ソースクラス] ツリーの項目を展開します。
-
プロパティを追加するには、[ソースクラス] ツリーでプロパティ名をダブルクリックします。このプロパティは [フィールド・リスト] に表示されるリストの最後に追加されます。既定のキャプションが付いたプロパティは、追加時にエイリアスが自動的に割り当てられます。CAPTION プロパティの詳細は、"Caché オブジェクトの使用法" の "主要なプロパティ・パラメータ" を参照してください。プロパティに表示される値は SqlFieldName です。これはプロパティ名と異なる場合があります。
-
項目を上または下に移動するには、[フィールド・リスト] でその項目をクリックし、必要に応じて上矢印または下矢印をクリックします。
-
項目を編集するには、[フィールド・リスト] でその項目をクリックし、[フィールド編集 :] で変更して [更新] をクリックします。例えば、SQL エイリアスを追加できます。サブセクション “追加のオプション” を参照してください。
-
項目を削除するには、[フィールド・リスト] でその項目をクリックし、[X] ボタンをクリックします。
完了したら、[OK] をクリックします。
または、[フィールド・リスト] に直接値を入力します。以下はその例です。
PatientID,Age,Gender,HomeCity->Name AS "Home City",TestScore AS "Test Score"
-
-
[Order by] — リストの並べ替え基準として使用するソース・テーブル内のフィールドのコンマ区切りリストを指定します (これらは [フィールド・リスト] に含める必要はありません)。全体的な並べ替えは、リストの最初のフィールドによって制御され、二次的な並べ替えは 2 番目のフィールドによって制御される、というように続きます。
このオプションを指定するには、[フィールド・リスト] の横の検索ボタン をクリックして、フィールドを選択するダイアログ・ボックスを表示します。このダイアログ・ボックスは、[フィールド・リスト] のダイアログ・ボックスの簡略バージョンです。
または、[Order By] に直接値を入力します。以下はその例です。
Age,Gender
フィールド名の後に ASC または DESC キーワードを組み込んで、それぞれ昇順または降順で並べ替えることができます。
-
[データ・コネクタ] フィールドと [カスタム SQL クエリ] フィールドは無視します。
追加のオプション
以下の点に注意してください。
-
Caché の矢印構文を使用すると、別のテーブルのプロパティを参照できます。"Caché SQL の使用法" で “暗黙結合 (矢印構文)” を参照してください。
PatientID,HomeCity,PrimaryCarePhysician->DoctorGroup
-
エイリアスを組み込むことができます。
PatientID,Age,Gender,HomeCity->Name AS "Home City",TestScore AS "Test Score"
または、以下のようにします。
PatientID,Age,Gender,HomeCity->Name "Home City",TestScore "Test Score"
-
特殊なトークン $$$TEXT[] を使用して指定することで、エイリアスをローカライズできます。以下はその例です。
%ID,DateOfSale As "$$$TEXT["Date Of Sale"]"
-
関数名を括弧で囲み、フィールド名として解釈されないようにすると、標準の SQL および Caché SQL 関数を使用できます。
(UCASE(PatientID)),%EXTERNAL(Gender)
-
field_name ではなく、source.field_name を使用すると、より高度な SQL 機能を使用できます。
%ID,'$'||source.Sales AS Sales
この例では、Sales 列に Sales フィールドが表示され、先頭にドル記号 ($) が付加されています。
データ・コネクタ・リストの定義
データ・コネクタ・リストは、データ・コネクタのフィールドを使用します。このようなリストを定義するには、この章の前半で示した説明に従ってリストを追加し、以下のオプションを指定します。
-
[データ・コネクタ] — 使用するデータ・コネクタ・クラスを選択します。
-
[フィールドリスト] — 組み込むフィールドを指定します。このフィールドは、データ・コネクタ内のフィールドとする必要があります。エイリアス、SQL 関数、または Caché 矢印構文を含めることはできません。
既定では、リストは %ID という名前のプロパティのみを表示します (存在する場合)。
-
[Order by] — 使用されません。
-
[カスタム SQL クエリ] フィールドは無視します。
キューブがデータ・コネクタに基づいている場合、そのキューブのすべてのリストが、それと同じデータ・コネクタに基づいている必要があります。
SQL カスタム・リストの定義
SQL カスタム・リストは、キューブで使用されるソース・テーブル以外のテーブルからのフィールドの使用が可能です。(データ・コネクタからのフィールドの使用は不可能なので注意してください。)
DeepSee では、もう 1 つの種類の “カスタム” リスト (アナライザでユーザによって定義されたリスト) がサポートされています。付録 “キューブ・クラスのリファレンス情報” の “<listingField>” を参照してください。
SQL カスタム・リストを定義するには、この章の前半で示した説明に従ってリストを追加し、以下のオプションを指定します。
-
[カスタム SQL クエリ] — これを選択します。
-
[カスタム SQL] — このセクションで示した説明に従って SQL SELECT クエリを指定します。
[カスタム SQL] クエリの詳細を確認する前に、DeepSee がどのようにリストを作成するのかを理解する必要があります。どのリストについても、現在のコンテキスト (ユーザがリストを要求するコンテキスト) で使用されるファクトに対応するソース ID 値のセットを含む一時リスト・テーブルが生成されます。カスタム SQL クエリは、一時リスト・テーブルでレコードとソース ID が一致するフィールドを選択します。内部的には、クエリ全体は以下のようになります。
SELECT source.Field1,source.Field2
FROM DeepSee_Study.Patient source,internal-listing-table-name list
WHERE source.%ID=list.sourceID AND list.queryKey='2144874459'
SQL カスタム・クエリを指定する際は、これらの詳細の一部を置換するトークンを指定します。具体的に、[カスタム SQL] では、以下の基本的な形式で値を指定します。
SELECT list of field names FROM $$$SOURCE, othertable AS alias WHERE $$$RESTRICT AND otherrestriction
以下は、この指定の説明です。
-
FROM 節は、クエリする複数のテーブルを指定します。この節の $$$SOURCE トークンは、キューブのソース・テーブルのエイリアスとして source を確立し、一時リスト・テーブルのエイリアスとして list を確立します。
$$$SOURCE は内部で DeepSee_Study.Patient source,internal-listing-table-name list などに置換されます。
また、othertable AS alias は、クエリする他のテーブル、およびこのテーブルのエイリアス (必要な場合) を指定します。さらに他のテーブルも同様に指定できます。
-
WHERE 節は、ソース・テーブルをリスト・テーブルおよび他のテーブルに結合する条件を指定します。
$$$RESTRICT トークンは、ソース・テーブルを一時リスト・テーブルに結合する条件によって置換されます。内部でこれは source.%ID=list.sourceID AND list.queryKey='2144874459' など、コンテキストに依存するものに置換されます。
また、otherrestriction は、他の SQL 制限を指定します。上記の構文では、制限が AND で結合されています。必要に応じて、OR を代わりに使用して、より複雑な WHERE 節を作成できます。
-
list of field names では、フィールド名のコンマ区切りリストを使用します。これは、FROM 節にリストされている任意のテーブルのフィールドにすることができます。キューブのソース・テーブルのフィールドでは、source.ffieldname の形式の参照を使用します。Caché 矢印構文も同様に組み込むことができます。
-
エイリアスを含めることもできます。また、特殊なトークン $$$TEXT[] を使用して指定することで、エイリアスをローカライズできます。以下はその例です。
SELECT ID,UnitsSold As "$$$TEXT["Units Solds"]" FROM $$$SOURCE WHERE $$$RESTRICT
-
クエリの最後に ORDER BY 節を含めることもできます。
簡単な例 (キューブのソース・テーブルのみを使用) :
SELECT source.PatientID,source.Age,source.HomeCity->Name
FROM $$$SOURCE
WHERE $$$RESTRICT
他の例 (他のテーブルのデータを使用) :
SELECT source.PatientID,FavoriteColor
FROM $$$SOURCE, DeepSee_Study.PatientDetails AS details
WHERE $$$RESTRICT AND source.PatientID=details.PatientID
マップ・リスト (地理リスト) の定義
既定では、[リスト・タイプ] は [テーブル] で、リストに情報のテーブルが表示されます。適切なデータがある場合、代わりに [リスト・タイプ] を [マップ] に指定できます。この場合、リストは、リスト・データに含まれている地理的な場所を示すマーカが付いたマップです。例えば、マップで営業場所や顧客の位置をハイライト表示することができます。以下はその例です。
マップ・リストでは Google Maps API が使用されます。この API が利用条件 (Terms of Use) に従って使用されていることを確認してください。利用条件には、このリストに表示されているリンクからアクセスできます (上図を参照)。
Google Maps API を使用するには、API キーを取得する必要があることに注意してください。詳細は、"DeepSee 実装ガイド" の "基本設定の指定" を参照してください。
このようなリストを定義するには、この章で前述した一般的な手順を使用して、以下の操作を実行します。
-
[リスト・タイプ] を [マップ] に指定します。
-
フィールド Latitude および Longitude が含まれるように、リスト・クエリを定義します (大文字と小文字は区別されます)。これらのフィールドには、それぞれに適切な緯度と経度が 10 進形式で格納されている必要があります (度/分/秒の形式ではありません)。
例えば、[SQL クエリ] を以下のように設定できます。
EventId, $$$IKSUMMARY as Summary, LocationCoordsLatitude As Latitude, LocationCoordsLongitude As Longitude
この例は、Aviation デモのものです。"DeepSee 上級モデリング・ガイド" の “構造化されていないデータのキューブでの使用 (iKnow)” を参照してください。
このリスト・クエリには、他のフィールドも含めることができます。追加したフィールドは、ユーザがマップの位置をクリックしたときに、バルーンに表示されます。以下はその例です。
この例は、Aviation デモのものです。"DeepSee 上級モデリング・ガイド" の “構造化されていないデータのキューブでの使用 (iKnow)” を参照してください。