InterSystems Business Intelligence のモデルの定義
ここでは、Business Intelligence キューブの定義に関する基本的な事項について説明します。
キューブのビルド時や詳細リストの実行時に、システムは SQL を使用してデータにアクセスします。モデルが SQL 予約語のクラス・プロパティを参照する場合は、区切り識別子のサポートを有効にして、InterSystems IRIS Business Intelligence がプロパティ名をエスケープできるようにする必要があります。予約語のリストは、"予約語" を参照してください。区切り識別子のサポートの有効化に関する詳細は、"識別子" を参照してください。
"このドキュメントに示したサンプルのアクセス方法" も参照してください。
キューブの定義
キューブを定義する手順は以下のとおりです。
-
アーキテクトで、[新規作成] をクリックします。
新しいキューブの詳細を入力するダイアログ・ボックスが表示されます。
-
[キューブ] をクリックします。
-
少なくとも、以下の情報は入力してください。
-
[キューブ名] — クエリで使用するキューブの論理名。
-
[キューブのクラス名] — キューブ・クラスの完全なパッケージおよびクラス名。
-
[ソースクラス] — このキューブのベース・クラスの完全なパッケージおよびクラス名。サブセクション "キューブに使用可能なソース・クラス" を参照してください。
クラス名は入力することも、[参照] をクリックしてクラスを選択することもできます。
その他のオプションは、このページの後続部分で説明します。
キューブ・クラスのクラス名のほか、キューブの作成後はすべてのキューブ・オプションを編集できます。
-
-
[OK] をクリックします。
-
必要に応じて、キューブを保存します。そのためには、以下の操作を実行します。
-
[保存] をクリックします。
-
[OK] をクリックします。
これで、クラスが作成されます。
-
ユーティリティを使用してキューブ・クラスを生成することもできます。これについては、この後のサブセクションで説明します。
または、"キューブ・クラスのリファレンス情報" の説明に従ってクラスを手動で作成します。
キューブ・クラスの生成
クラス %DeepSee.WizardUtilsOpens in a new tab は、キューブ・クラスの生成に使用できる %GenerateCubeDefinition()Opens 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 つのリストがあります。
このメソッドでは、一時プロパティおよび多次元プロパティは無視されます。
キューブのベース・クラスの変更
まれに、キューブのベース・クラスを変更する必要性が生じる場合があります。そのためには、アーキテクトで以下のいずれかの操作を実行します。
-
詳細領域で、キューブの [ソースクラス] オプションを編集します。
-
[クラス・ビューワ] の最上部の [ソース値] の横にある [変更] リンクをクリックします。
この処理でダイアログ・ボックスが表示され、ソース・クラスを選択できます。これは、"キューブに使用可能なソース・クラス" で表示されているものと同じダイアログ・ボックスです。
この後、モデルのすべての部分でソース・プロパティまたはソース式を適切に変更することを忘れないでください。
キューブに使用可能なソース・クラス
アーキテクトで、[ソースクラス] の横にある [新規] をクリックしてから [参照] をクリックすると、以下のようなダイアログ・ボックスが表示されます。
ここでは、このネームスペースのキューブのソースとして使用可能な任意のクラスを選択できます。この方法で使用可能なクラスには以下の 3 タイプがあります。
-
永続クラス — %Library.PersistentOpens in a new tab を拡張するクラス。
-
データ・コネクタ・クラス — %DeepSee.DataConnectorOpens in a new tab を拡張するクラス。データ・コネクタは、任意の SQL クエリの結果を、キューブのソースとして使用可能なオブジェクトにマップします。通常、データ・コネクタは、InterSystems 以外のデータベースにアクセスしますが、データ・コネクタを使用して InterSystems データベースに対する SQL クエリ (ビューに対する SQL クエリを含む) を指定することもできます。
データ・コネクタに基づくキューブと、そのキューブ内に同じくデータ・コネクタに基づくリストがある場合、これらのすべてのデータ・コネクタは、idkey="true" とマークされた同じプロパティを持つ必要があります。これは、基礎となるメカニズムがいずれの場合も同じ ID 値を使用するためです。
"データ・コネクタの定義と使用" を参照してください。
-
コレクション・クラス。
他のキューブ・オプション
アーキテクトでは、以下のキューブ・オプションを指定できます。
-
[キューブ名] — クエリで使用するキューブの論理名。
-
[表示名] — キューブのローカライズ可能な名前。この名前を指定しない場合、代わりに論理名が表示されます。
-
[説明] — (オプション) キューブ・クラス定義に追加するコメント。クラス定義の開始時に、各行が個別のコメント行として保存されます。
-
[キャプション] — (オプション) このキューブでの作業時にアナライザおよびその他のユーティリティに表示されるキャプションを指定します。
-
[ドメイン] — (オプション) このキューブのローカライズ文字列を含むドメインの名前を指定します。すべてのキューブに単一のドメインを使用すると便利な場合があります。また、キューブごとに別のドメインを設定することが適切な場合もあります。"ローカライズの実行" を参照してください。
-
[ソースクラス] — このキューブのベース・クラスの完全なパッケージおよびクラス名。
-
[ヌル置換文字列] — (オプション) レベルのソース・データが NULL の場合にメンバ名として使用する文字列 (例 : None) を指定します。
レベルでは、同名のレベル・オプションを使用してこのオプションをオーバーライドできます。
-
[デフォルトの詳細リスト] — (オプション) このキューブの既定のリストの論理名。このリストはキューブで定義する必要があります。
-
[リソース] — (オプション) キューブを保護するリソースを指定します。
この使用法については、"セキュリティの設定" を参照してください。
-
[所有者] — (オプション) キューブの所有者を指定します。InterSystems IRIS® データ・プラットフォーム・ユーザ名を指定します。
-
[カウント・メジャーの名前] — (オプション) Count メジャーの代替名を指定します。既定は %COUNT です。複合キューブを作成する場合は、Count メジャーの名前を変更すると便利です。"InterSystems Business Intelligence の上級モデリング" を参照してください。
-
[カウント・メジャーのキャプション] — (オプション) Count メジャーの代替キャプションを指定します。既定は COUNT です。
-
[初期ビルド順] — (オプション) キューブ全体を構築する際に使用するオプションの ORDER BY 節を指定します。キューブの同期化およびインクリメンタル更新には影響しません。ソース・テーブルのフィールドのコンマ区切りリストを指定します。SQL キーワード ASC および DESC を使用できます。例 : Age DESC,Gender
このオプションの意味については、"キャッシュのバケットとファクトの順序" を参照してください。
-
[ビルド制限] — (オプション) キューブの構築および更新時に使用するオプションの WHERE 節を指定します。これにより、キューブがレコードのサブセットを使用するようになります。ソース・テーブルのフィールドを使用する SQL 比較式を指定します。例 : Gender='F'
キューブがデータ・コネクタに基づいている場合、このオプションは何の効果も持ちません。
代替オプションについては、"キューブで使用するレコードの制限" を参照してください。
-
[依存] — (オプション) このクラスをコンパイルする前に実行可能にする必要がある 1 つ以上のクラスを指定します。このオプションは、アーキテクトが DependsOn コンパイラ・キーワードをどのように設定するかを制御します。
既定では、キューブを作成すると、システムは自動的に DependsOn キーワードを、キューブのソース・クラスの名前と等しくなるように設定します。場合によっては (例えば、キューブ間のリレーションシップによって)、追加のクラスを指定する必要があります。
このオプションを指定する必要がある場合は、コンマで区切られたクラスのリストを指定して、そのリスト内の各クラスの完全なパッケージ名とクラス名を指定します。このリストには、キューブのソース・クラスが含まれている必要があります。
キューブ間のリレーションシップの詳細は、"InterSystems Business Intelligence の上級モデリング" を参照してください。
-
[SQL Restrict を許可] — (オプション) このチェック・ボックスにチェックを付けると、キューブに対して %SQLRESTRICT ディメンジョンを使用できます。このオプションにより、SQL SELECT 文または WHERE 節を追加することで、MDX クエリのスライサに SQL 制限を定義できます。このオプションを選択すると、アナライザの [ピボット・オプション] メニューの [SQL 制限] フィールドも有効になります。%SQLRESTRICT ディメンジョンの使用法の詳細は、"%FILTER 節" を参照してください。
キューブへの項目の追加
アーキテクトでは、以下の 2 つの一般的な方法でキューブに項目を追加できます。
-
[要素を追加] リンクの使用。以下の操作を行います。
-
モデル・ビューワ上部の [要素を追加] をクリックします。
追加する項目の種類を選択できるダイアログ・ボックスが表示されます。
-
項目名を入力します。
-
項目の種類をクリックします。
-
[OK] をクリックします。
-
-
ドラッグ・アンド・ドロップ操作の使用。以下の操作を行います。
いずれの場合も、項目が追加されてモデル・ビューワに表示されます。次に、詳細領域で変更を加えることができます。
以下のテーブルは、さまざまな種類のキューブ項目について説明している項目を示しています。これらの項目にも、プロパティ名をドラッグ・アンド・ドロップする場所に関して固有の情報が記載されています。
項目タイプ | 参照先 |
---|---|
データ・ディメンジョン、時間ディメンジョン、年齢ディメンジョン、階層、またはレベル | ディメンジョン、階層およびレベルの定義 |
プロパティ | プロパティの定義 |
メジャー | メジャーの定義 |
リスト | リストの定義 |
リスト・フィールド | リスト・フィールドの定義 |
計算メンバ | 計算メンバの定義 |
名前付きセット | 名前付きセットの定義 |
モデル要素の名前
モデル要素を定義する際は、その要素の論理名を指定します (アーキテクトの [名前] フィールド)。この名前は MDX クエリで使用され、またその要素の既定の表示名になります。ここでは、この名前の要件と推奨事項について説明します。非準拠の名前を定義しようとすると、エラーが表示され、別の名前を入力するよう求められます。
論理名は、以下の規則に従う必要があります。
-
先頭の文字は、文字 (Latin-1 文字セット)、数字、アンダースコア文字 (_) のいずれかにする必要があります。
-
先頭以外の文字は、文字、数字、スペース、アンダースコア文字のいずれかにする必要があります。InterSystems IRIS バージョン 2020.1.1 以降では、要素名にピリオドとコロンも使用できます。
名前にスペースを使用した場合、MDX クエリの作成時には名前を角括弧で囲む必要があります。
-
名前に MDX 予約キーワードを使用することはできません。MDX では予約キーワードの大文字と小文字は区別されません。
-
要素名は、大文字と小文字の違いだけでは一意とは見なされません。例えば、zipcode と zipCode は、一意の名前とは見なされません。
論理名は、以下の追加規則にも従う必要があります。
-
特定の InterSystems IRIS ネームスペース内では、各キューブ名が一意であることが必要です。
-
特定のキューブ内では、各ディメンジョン名が一意であることが必要です。
-
特定のディメンジョン内では、各階層名が一意であることが必要です。
-
特定の階層内では、各レベル名が一意であることが必要です。
Note:キューブ内では、レベル名が一意である必要はありません。ただし、キューブ内に同じ名前のレベルが複数ある場合、[ファクト・テーブルのフィールド名] オプションを指定し、ファクト・テーブル内の各レベルを一意の名前にする必要があります。"ファクト・テーブル内のフィールド名の指定" を参照してください。
-
特定のレベル内では、各プロパティ名が一意であることが必要です。キューブ・クラス定義で、レベルに <member> 要素を手動で定義する場合、プロパティにそのレベル内のいずれかの <member> 要素と同じ名前を指定することはできません。
-
内部プロパティの名前は大文字と小文字が区別されない予約キーワードであるため、ユーザ指定のプロパティの名前として使用できませんが、1 つだけ例外があります。その例外とは、Name (大文字と小文字は区別されない) というプロパティで [メンバ名として使用] オプションも有効になっている場合は、このプロパティを作成できるというものです。
内部プロパティのリストについては、"内部プロパティ" を参照してください。
-
特定のキューブ内では、各メジャー名が一意であることが必要です。
-
[式] 要素が単一値ではなくオブジェクトを返すように定義されている場合、その論理名にピリオド (“.”) を含めることはできません。このような場合は、代わりにアンダースコア (“_”) 文字を使用することをお勧めします。
その他の共通オプション
アーキテクトでは、モデル要素を定義する際、その要素に対して以下のオプションも指定できます。
-
[表示名] — (オプション) ユーザ・インタフェースで使用されるこの要素のローカライズ名。この名前を指定しない場合、代わりに論理名が表示されます。
-
[説明] — (オプション) この要素の説明。
-
[無効] — (オプション) このチェック・ボックスにチェックを付けると、その要素は無効 (コンパイラで認識されない) になります。キューブのリコンパイル時は、この要素が無視されます。
-
[追加の説明] — (オプション) この要素に関する追加の注意事項。アーキテクトとスタジオでのみ表示されます。
キューブのコンパイルとビルド
アーキテクトでは、キューブを開発する際、多くの場合はそれらのキューブを複数回にわたってリコンパイルしたり、再構築したりします。概要は以下のようになります。
-
キューブをコンパイルするには、[コンパイル] をクリックします。
クラスのコンパイルが開始され、進捗状況を示すダイアログ・ボックスが表示されます。
保存していない変更がある場合は、システムによって保存されます。
次に [完了] をクリックします。
-
キューブをビルドするには、[ビルド] をクリックします。ダイアログ・ボックスが表示されます。[ビルド] をクリックします。
キューブの構築が開始され、その進捗状況が表示されます。そして、[OK] をクリックします。
これで、アナライザでキューブの使用が可能になります。
詳細は、"キューブのコンパイルとビルド" を参照してください。
アナライザでキューブを開く
キューブを開発するときには、定期的にアナライザを使用して、結果を検証する必要があります。アナライザでキューブを開く手順は以下のとおりです。
-
[Analytics]→[アナライザ]→[進む] をクリックします。
Tip:既にアナライザが開いている場合は、ページ上部の [アナライザ] リンクをクリックするだけです。
-
左領域に検証対象のキューブが表示されていない場合は、[開く] をクリックして、キューブを選択します。
レベルの検証に固有のヒントについては、"レベルの検証" を参照してください。アナライザの使用に関する一般情報は、"アナライザの使用法" を参照してください。
キューブの削除
キューブを削除するには、以下の手順を実行します。
-
ターミナルで、以下のコマンドを実行します。
do ##class(%DeepSee.Utils).%KillCube(cubeName)
cubeName は、削除するキューブの論理名です。このコマンドによって、キューブのキャッシュとインデックスが削除されます。
-
また、ターミナルで、以下のようにキューブのメタデータを削除します。
kill ^DeepSee.Cubes("cubes",cubeName)
cubeName は、削除するキューブの論理名です。
-
以下のいずれかの方法を使用して、キューブ・クラス (および生成されたクラスとデータ) を削除します。
-
ターミナルで、以下のコマンドを実行します。
do $system.OBJ.Delete(classname)
classname は、キューブ・クラスの完全なパッケージおよびクラス名です。以下はその例です。
do $system.OBJ.Delete("Mypackage.Myclass")
-
スタジオでキューブ・クラスを右クリックして、[削除] を選択します。
キューブを削除しない場合は、これをリコンパイルおよび再構築します。
-