基本的な KPI の定義
ここでは、Business Intelligence の重要業績評価指標 (KPI) の概要を示し、ハードコードされたクエリを使用する KPI の定義方法を説明します。
KPI とその他の種類のモデル要素との比較については、"モデル・オプションの概要" を参照してください。
"フィルタおよびリストを含む KPI の定義" および "高度な KPI の定義" も参照してください。
Text Analytics に基づく KPI の定義に関する詳細は、"InterSystems IRIS 自然言語処理 (NLP) の使用法" の "KPI とダッシュボード" を参照してください。
"BI サンプルのアクセス方法" も参照してください。
KPI の概要
KPI は、%DeepSee.KPIOpens in a new tab をベースにしたクラスです。多くの場合、KPI はクエリを使用して、結果セットを表示します (それ以外は、KPI はアクションのみ定義します。"InterSystems Business Intelligence の実装" の "カスタム・アクションの定義" を参照してください)。
KPI の使用法
KPI は、ピボット・テーブルと同様に、ダッシュボードで、ウィジェット内に、表示できます。
また、MDX %KPI 関数を使用して、KPI の値を取得することもできます。その結果として、KPI に基づいた計算メンバを定義できます。
ObjectScript から KPI の値にアクセスするには、KPI クラスの %GetKPIValueArray() メソッドを使用します。例については、"ハードコードされたクエリを使用した KPI の定義" を参照してください。
ピボット・テーブルとの比較
KPI は、さまざまな点でピボット・テーブルと似ていますが、ピボット・テーブルにはないオプションが追加されています。違いの 1 つとして、KPI は SQL クエリを使用できます。SQL クエリと MDX クエリは適したシナリオが異なるので、これは重要な違いです。場合によっては SQL クエリのほうが効果的であり、そのような場合は KPI で SQL クエリを使用する必要があります。
KPI とピボット・テーブルの他の相違点と類似点は、"InterSystems Business Intelligence のモデルの定義" の "モデル・オプションの概要" を参照してください。
MDX と SQL のどちらかを選択する方法
SQL クエリと MDX クエリは、適したシナリオが異なり、場合によっては SQL クエリのほうが効果的です。
MDX は一般に、大量のレコードを集約する場合のほうが適しています。一方で、集約をまったく行わない場合、または下位レベルでのみ集約する場合は、SQL のほうが適しています。例えば、次のようなピボット・テーブルがあるとします。
このピボット・テーブルでは、各行がソース・テーブルの 1 行を表しています。同等の SQL クエリのほうが高速です。
KPI 結果セットの構造
KPI の結果セットは、系列とプロパティで構成されています。
KPI 系列は行です。以下の例は、9 つの系列を示しています (このページで後述する KPI テスト・ページに表示されます)。各系列には名前があり、ここでは最初の列に表示されています。
KPI プロパティはデータ列です。前述の例は、2 つのプロパティを持つ KPI を示しています。
MDX クエリに基づく KPI の場合、系列は通常レベルのメンバに対応し、プロパティは通常メジャーに対応します。
ハードコードされたクエリを使用した KPI の定義
ハードコードされたクエリを使用する単純な KPI を作成するには、スタジオで以下の手順を実行します。
-
[ファイル]→[新規作成] を選択してから、[カスタム] タブ、[Business Intelligence KPI の新規作成] の順に選択します。
-
以下の必須の値を指定します。
-
必要に応じて、以下に示す他の値を指定します。
-
[KPI キャプション] — 使用されていません。
-
[KPI 名] — KPI の論理名。
-
[説明] — KPI の説明。クラスのコメント行として保存されます。
-
[ドメイン] — この KPI が属するローカライズ・ドメイン。詳細は、"InterSystems Business Intelligence の実装" を参照してください。
-
[リソース] — この KPI を保護するリソース。これの使用法については、"InterSystems Business Intelligence の実装" の "セキュリティの設定" を参照してください。
-
[ソース・タイプ] — この KPI のデータのソースを指定します。[mdx] または [sql] のどちらかを選択します ([手動] の詳細は、"高度な KPI の定義" を参照してください)。
-
[プロパティ] — この KPI のプロパティの名前 (結果セットの列名) を入力します。1 行につき 1 つのプロパティを入力します。
-
[フィルタ] — KPI クエリで使用するフィルタの名前を入力します。"フィルタおよびリストを含む KPI の定義" を参照してください。1 行につき 1 つのフィルタ名を入力します。
-
[アクション] — KPI で定義するアクションの名前を入力します。"InterSystems Business Intelligence の実装" の "カスタム・アクションの定義" を参照してください。1 行につき 1 つのアクション名を入力します。
これらの値はすべて、後で同じように編集できます。
-
[完了] を選択します。
ウィザードにより、以下のようなクラス定義が生成されます。
Class MyApp.KPI.MyKPI Extends %DeepSee.KPI
{
Parameter DOMAIN = "MyAppDomain";
Parameter RESOURCE = "KPI_Resource";
/// This XData definition defines the KPI.
XData KPI [ XMLNamespace = "http://www.intersystems.com/deepsee/kpi" ]
{
<kpi xmlns="http://www.intersystems.com/deepsee/kpi"
name="MyKPI" sourceType="mdx"
caption="MyCaption"
>
<property name="PatCount" displayName="PatCount" columnNo="1"/>
<property name="AvgAge" displayName="AvgAge" columnNo="2"/>
</kpi>
}
XData ブロックは、KPI を定義します。XData ブロックの <kpi> は XML 要素です。この要素は、<kpi で始まり、右山括弧で終了します。xmlns、name、sourceType、および caption は XML 属性です。各属性に値があります。この例では、sourceType 属性の値は mdx です。
このクラスには、さまざまなメソッドのスタブ定義も含まれています。既定では、これらは何も実行しません。詳細は、"フィルタおよびリストを含む KPI の定義" および "高度な KPI の定義" も参照してください。
-
<kpi> 要素内に、以下の属性指定のどちらかを追加します。
mdx="MDX query"
または以下のようになります。
sql="SQL query"
MDX query は MDX SELECT クエリ、SQL query は SQL SELECT クエリです。(ウィザードで mdx を選択した場合は mdx オプションを使用し、sql を選択した場合は sql オプションを使用します)。
例えば以下のようになります。
<kpi xmlns="http://www.intersystems.com/deepsee/kpi"
name="MyKPI" sourceType="mdx"
mdx="SELECT {MEASURES.[%COUNT],MEASURES.[Avg Age]} ON 0, HomeD.H1.City.MEMBERS ON 1 FROM patients"
caption="MyCaption"
>
この属性指定は、始まりの <kpi と右山括弧の間の任意の場所に追加できます。属性指定は、上記のように 1 行に独立して記述することも、他の属性と同じ行に記述することもできます。XData ブロック内では、スタジオにより入力支援機能が提供されます。
要件は、このページで前述の "KPI クエリの要件" を参照してください。
MDX の詳細は、"InterSystems MDX の使用法" および "InterSystems MDX リファレンス" を参照してください。
-
必要に応じて、次のセクションの説明に従って、クラス・パラメータを指定します。
-
クラスをコンパイルします。
-
[ビュー]→[ウェブページ] を選択します。
これにより、表示は以下のようになります。
[系列] 列は、各系列の名前を示します。この名前は、この KPI をスコアカードに表示する際にラベルとして使用できます。
このテーブルには、これらの列の右に、KPI の <property> ごとに 1 つの列があります。この列には、KPI の行ごとにそのプロパティの現在の値が表示されます。
KPI テスト・ページでは、使用前の KPI を簡単にテストできます。KPI クラスの %GetKPIValueArray() メソッドを使用することもできます。以下に例を示します。
SAMPLES>set status=##class("HoleFoods.KPIYears").%GetKPIValueArray("HoleFoods.KPIYears",.pValues,$LB("Value"))
SAMPLES>w status
1
SAMPLES>set status=##class("HoleFoods.KPIYears").%GetKPIValueArray("HoleFoods.KPIYears",.pValues,$LB("Value"))
SAMPLES>w status 1
SAMPLES>zw pValues pValues(1)=$lb("2010")
pValues(2)=$lb("2011")
pValues(3)=$lb("2012")
pValues(4)=$lb("2013")
pValues(5)=$lb("2014")
pValues(6)=$lb("2015")
詳細は、%DeepSee.AbstractKPIOpens in a new tab のクラスリファレンスを参照してください。
クラス・パラメータの指定
KPI クラスで以下のクラス・パラメータの一部または全部を指定できます。
FORCECOMPUTE
この KPI が MDX クエリ内で使用される場合 (つまり、%KPI 関数を介して)、システムで常にこの KPI の値を再計算するかどうかを指定します。既定は false です。そのクエリが再実行されると、代わりにキャッシュの値が使用されます。
KPI で外部データを使用する場合、FORCECOMPUTE を true に設定すると便利な場合があります。
PUBLIC
KPI が、スコアカードおよび他のダッシュボード・ウィジェットで使用可能かどうか、および MDX %KPI 関数で使用可能かどうかを制御します。KPI をダッシュボードで使用できないようにする場合、クラスに PUBLIC クラス・パラメータを追加し、値を 0 に設定します。
RESOURCE
Parameter RESOURCE = "KPI_Resource";
この KPI を保護するリソースを指定します。これの使用法については、"InterSystems Business Intelligence の実装" の "セキュリティの設定" を参照してください。
ASYNC クラス・パラメータの詳細は、"高度な KPI の定義" を参照してください。
速度計の範囲としきい値の指定
KPI の定義内で、速度計で使用する範囲としきい値を指定できます。これらの値を指定するには、<kpi> 要素を編集して、以下の属性を指定します。
-
rangeLower — メータに表示される下限値の既定値。
-
rangeUpper — メータに表示される上限値の既定値。
-
thresholdLower — この KPI の下限しきい値の既定値。しきい値領域は、対比色で表示されます。
-
thresholdUpper — 上限しきい値の既定値。
以下に例を示します。
<kpi name="KPIForRangeDemos"
sourceType="mdx"
mdx='SELECT MEASURES.[%COUNT] ON 0, AgeD.[All Patients] ON 1 FROM PATIENTS'
rangeLower="0"
rangeUpper="900"
thresholdLower="20"
thresholdUpper="800"
>
<property name="Patient Count" columnNo="1" />
</kpi>
この KPI を速度計で表示すると、(既定では) 以下のようになります。
速度計の値ボックスには、rangeUpper の値を超えていても、実際の KPI 値 (1000) が表示されていることがわかります。
プログラムによって範囲としきい値を設定することもできます。値をハードコードすることが不適切な場合は、その方法が便利です。"高度な KPI の定義" を参照してください。
Note:
ダッシュボードでスコアカードを構成する際、[下限のしきい値]、[上限のしきい値]、[範囲の下限]、および [範囲の上限] の各オプションがあります。KPI 属性 rangeLower、rangeUpper、thresholdLower、および thresholdUpper は、これらのスコアカード・オプションに影響しないことに注意してください。
%CONTEXT フィルタの無効化
前述したように、MDX %KPI 関数を使用して、KPI の値を取得できます。MDX ベースの KPI の場合、%KPI 関数には、KPI にコンテキスト情報を渡すオプション・パラメータ (%CONTEXT) があります。既定では、このコンテキスト情報は、フィルタ節として MDX クエリに適用されます。この自動動作を無効にするには、以下のように、%GetMDXContextFilter() メソッドをオーバーライドします。
Method %GetMDXContextFilter() As %String
{
Quit ""
}