共有ディメンジョンおよび複合キューブの定義
ここでは、Business Intelligence で使用するために、共有ディメンジョンおよび複合キューブを定義する方法を説明します。
複合キューブはアーキテクトで定義できますが、共有ディメンジョンについては IDE を使用する必要があります。
背景情報は、"モデル・オプションの概要" を参照してください。
"BI サンプルのアクセス方法" も参照してください。
複合キューブの定義
複合キューブを作成するには、スタジオを使用する必要があります。複合キューブを作成するには、以下の手順をすべて実行します。
-
[ベース・キューブ] オプションにキューブのコンマ区切りのリストを指定して、サブジェクト領域を作成します。例えば、サンプル・サブジェクト領域 CompoundCube/CompoundCube の場合、[ベース・キューブ] は以下のようになります。
CompoundCube/Patients,CompoundCube/Doctors,CompoundCube/CityRainfall
また、右側の詳細領域の [依存] オプションを編集します。値には、すべてのキューブ・クラスの完全なパッケージおよびクラス名を指定します。
どのサブジェクト領域クラスも常に、基にしている 1 つまたは複数のキューブ・クラスの後に、コンパイルする必要があります。これを制御するには、[依存] 設定が役に立ちます。
-
複合キューブで使用するキューブで、必要に応じて Count メジャーを再定義します。これを実行するには、キューブの定義内で countMeasureName 属性と、countMeasureCaption 属性 (オプション) を指定します。以下に例を示します。
<cube xmlns="http://www.intersystems.com/deepsee" name="Doctors" displayName="Doctors" sourceClass="BI.Study.Doctor" countMeasureName="DoctorCount" countMeasureCaption="Doctor Count"> ...
この変更には、これらのキューブの再構築は必要ありません。
-
複合キューブではオプションとして、メジャー名の表示名を、複合キューブで使用する際により特定しやすい名前に変更することができます。以下に例を示します。
<subjectArea xmlns="http://www.intersystems.com/deepsee/subjectarea" name="CompoundCube" displayName="CompoundCube" baseCube="Doctors,Patients"> <measure name="Allergy Count" displayName="Patient Allergy Count"/> <measure name="Avg Allergy Count" displayName="Patient Avg Allergy Count"/> <measure name="Age" displayName="Patient Age"/> <measure name="Avg Age" displayName="Patient Avg Age"/> <measure name="Test Score" displayName="Patient Test Score"/> <measure name="Avg Test Score" displayName="Patient Avg Test Score"/> <measure name="Encounter Count" displayName="Patient Encounter Count"/> <measure name="Avg Enc Count" displayName="Patient Avg Enc Count"/> </subjectArea>
変更したすべてのキューブの定義をリコンパイルします。最後に、複合キューブをリコンパイルします。
複合キューブでは、最初にリストしたキューブのディメンジョンと、形式的に共有されたすべてのディメンジョンが、使用可能なディメンジョンになります。利用可能なメジャーには、すべてのキューブのすべてのメジャーが含まれます。
両方のキューブで同じ名前を持つディメンジョンは、形式的に共有される必要があります。両方のキューブで同じ名前を持つメジャーは、1 つに集約されます。
複合キューブの詳細リスト
複合キューブの詳細リストを定義するには、すべての参加キューブで同一の詳細リストを定義します。システムでこれらのリストの SQL UNION が生成されます。
リストは直接 SQL に基づく必要があります。データ・コネクタ経由の詳細リストは、複合キューブでは機能しません。
複合キューブの例
複合キューブの例は、クラス BI.Model.CompoundCube.CompoundCube を参照してください。このクラスは以下のように定義されています。
Class BI.Model.CompoundCube.CompoundCube Extends %DeepSee.SubjectArea
[ DependsOn = (BI.Model.CompoundCube.Patients, BI.Model.CompoundCube.Doctors,
BI.Model.CompoundCube.CityRainfall) ]
{
/// This XData definition defines the SubjectArea.
XData SubjectArea [ XMLNamespace = "http://www.intersystems.com/deepsee/subjectarea" ]
{
<subjectArea name="CompoundCube/CompoundCube" displayName="CompoundCube/CompoundCube"
baseCube="CompoundCube/Patients,CompoundCube/Doctors,CompoundCube/CityRainfall" >
</subjectArea>
}
}
キューブ CompoundCube/Patients (BI.Model.CompoundCube.Patients で定義されている) は、すべてのディメンジョンを定義しています。
他のキューブ (CompoundCube/Doctors と CompoundCube/CityRainfall) は、CompoundCube/Patients と共有するディメンジョンを定義しています。すべてのディメンジョンがすべてのキューブで定義されているわけではないことに注意してください。以下のテーブルに、各キューブで使用可能なディメンジョンを示します。
ディメンジョン | CompoundCube/Patients キューブ | CompoundCube/Doctors キューブ | CompoundCube/CityRainfall キューブ |
---|---|---|---|
BirthD | |||
DocD | |||
DocTypeD | |||
HomeD |
HomeD ディメンジョンは、3 つのキューブすべてで定義されているので、このディメンジョンは 3 つのキューブすべてのメジャーに影響します。例えば、ダッシュボード Demo Compound Cube には、以下のピボット・テーブルが含まれます。
Patient Count メジャーは CompoundCube/Patients で定義され、Doctor Count メジャーは CompoundCube/Doctors で定義され、Avg Monthly Rainfall Inches メジャーは CompoundCube/CityRainfall で定義されています。その値は、各市区町村の各メジャーで異なることに注意してください。
同じダッシュボードに、BirthD を行に使用するピボット・テーブルも含まれています。
CompoundCube/Doctors では BirthD ディメンジョンは定義されていないので、メジャー Doctor Count を、出生年代ごとに取得することはできません。Doctor Count 列の数値がすべてのセルで同じであることに注意してください。これは、すべての患者の 出生年代にわたる医師の合計数です。
最後に、Demo Compound Cube ダッシュボードには、DoctTypeD を行に使用するピボット・テーブルも含まれています。
CompoundCube/CityRainfall では DocTypeD ディメンジョンは定義されていないので、メジャー Avg Monthly Rainfall Inches を、医師のタイプごとに取得することはできません。このメジャーは、すべての患者にわたって集約されます (メジャーでの定義に従い、平均によって)。