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?

基本的な KPI の定義

この章では、DeepSee の重要業績評価指標 (KPI) の概要を説明し、ハードコードされたクエリを使用する KPI の定義方法を説明します。以下のトピックについて説明します。

KPI とその他のモデル要素との比較については、"DeepSee モデルの定義" の “モデル・オプションの概要” の章を参照してください。

フィルタおよびリストを含む KPI の定義” の章および “高度な KPI の定義” の章も参照してください。

iKnow KPI の定義の詳細は、"iKnow の使用法" の “iKnow KPI と DeepSee のダッシュボード” を参照してください。

KPI の概要

KPI は、%DeepSee.KPIOpens in a new tab をベースにしたクラスです。多くの場合、KPI はクエリを使用して、結果セットを表示します (それ以外は、KPI はアクションのみ定義します。"DeepSee 実装ガイド" の “カスタム・アクションの定義” を参照してください)。

KPI の使用法

KPI は、ピボット・テーブルと同様に、ダッシュボードで、ウィジェット内に、表示できます。

また、MDX %KPI 関数を使用して、KPI の値を取得することもできます。その結果として、KPI に基づいた計算メンバを定義できます。

ObjectScript から KPI の値にアクセスするには、KPI クラスの %GetKPIValueArray() メソッドを使用します。例については、“ハードコードされたクエリを使用した KPI の定義” を参照してください。

ピボット・テーブルとの比較

KPI は、さまざまな点でピボット・テーブルと似ていますが、ピボット・テーブルにはないオプションが追加されています。違いの 1 つとして、KPI は SQL クエリを使用できます。SQL クエリと MDX クエリは適したシナリオが異なるので、これは重要な違いです。場合によっては SQL クエリのほうが効果的であり、そのような場合は KPI で SQL クエリを使用する必要があります。

KPI とピボット・テーブルの他の相違点および類似点は、"DeepSee モデルの定義" の “モデル・オプションの概要” を参照してください。

KPI クエリの要件

多くの場合、KPI は MDX クエリまたは SQL クエリのどちらかを使用します。クエリの形式にはルールがあります。このルールは、KPI 結果セットの構造によって定められるものです (後続のセクションを参照してください)。

  • クエリで MDX を使用する場合、以下の要件に注意してください。

    • クエリは行に MEMBERS 関数を使用する必要があります。ネストした行を使用できます。

    • クエリは列にメジャーを使用する必要があります。

    • クエリでは、列にネストを使用できません。

  • クエリは数値を返す必要があります。

  • クエリが 1000 行を超える行を返す場合は、最初の 1000 行のみが使用されます。

これらのルールに従わないクエリを使用できます。そのためには、結果セットを解析して、直接 KPI インスタンスのプロパティを指定する必要があります。詳細は、“高度な KPI の定義” の章を参照してください。

メータで KPI を表示する場合、KPI の最初の行のみが使用されることにも注意してください。

MDX と SQL のどちらかを選択する方法

SQL クエリと MDX クエリは、適したシナリオが異なり、場合によっては SQL クエリのほうが効果的です。

MDX は一般に、大量のレコードを集約する場合のほうが適しています。一方で、集約をまったく行わない場合、または下位レベルでのみ集約する場合は、SQL のほうが適しています。例えば、次のようなピボット・テーブルがあるとします。

generated description: very granular level

このピボット・テーブルでは、各行がソース・テーブルの 1 行を表しています。同等の SQL クエリのほうが高速です。

KPI 結果セットの構造

KPI の結果セットは、系列とプロパティで構成されています。

KPI 系列は行です。以下の例は、9 つの系列を示しています (この章で後述する、KPI テスト・ページに表示されます)。各系列には名前があり、ここでは最初の列に表示されています。

generated description: sample kpi

KPI プロパティはデータ列です。前述の例は、2 つのプロパティを持つ KPI を示しています。

MDX クエリに基づく KPI の場合、系列は通常レベルのメンバに対応し、プロパティは通常メジャーに対応します。

ハードコードされたクエリを使用した KPI の定義

ハードコードされたクエリを使用する単純な KPI を作成するには、スタジオで以下の手順を実行します。

  1. [ファイル]→[新規作成] を選択してから、[カスタム] タブ、[DeepSee KPI の新規作成] の順に選択します。

  2. 以下の必須の値を指定します。

    • Package Name — KPI クラスを含むパッケージ。

    • Class Name — KPI クラスの略称。

  3. 必要に応じて、以下に示す他の値を指定します。

    • [KPI キャプション] — 使用されていません。

    • [KPI 名] — KPI の論理名。

    • [説明] — KPI の説明。クラスのコメント行として保存されます。

    • [ドメイン] — この KPI が属するローカライズ・ドメイン。詳細は、"DeepSee 実装ガイド" を参照してください。

    • [リソース] — この KPI を保護するリソース。これの使用法については、"DeepSee 実装ガイド" の “セキュリティの設定” を参照してください。

    • [ソース・タイプ] — この KPI のデータのソースを指定します。[mdx] または [sql] のどちらかを選択します ([手動] の詳細は、“高度な KPI の定義” の章を参照してください)。

    • [プロパティ] — この KPI のプロパティの名前 (結果セットの列名) を入力します。1 行につき 1 つのプロパティを入力します。

    • [フィルタ] — KPI クエリで使用するフィルタの名前を入力します。次の章を参照してください。1 行につき 1 つのフィルタ名を入力します。

    • [アクション] — KPI で定義するアクションの名前を入力します。"DeepSee 実装ガイド" の “カスタム・アクションの定義” を参照してください。1 行につき 1 つのアクション名を入力します。

    これらの値はすべて、後で同じように編集できます。

  4. [完了] を選択します。

    ウィザードにより、以下のようなクラス定義が生成されます。

    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 で始まり、右山括弧で終了します。xmlnsnamesourceType、および caption は XML 属性です。各属性に値があります。この例では、sourceType 属性の値は mdx です。

    このクラスには、さまざまなメソッドのスタブ定義も含まれています。既定では、これらは何も実行しません。詳細は、この後の 2 つの章を参照してください。

  5. <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 の詳細は、"DeepSee での MDX の使用法" および "DeepSee MDX リファレンス" を参照してください。

  6. 必要に応じて、次のセクションの説明に従って、クラス・パラメータを指定します。

  7. クラスをコンパイルします。

  8. [ビュー]→[ウェブページ] を選択します。

    これにより、表示は以下のようになります。

    generated description: kpi test page new

    [系列] 列は、各系列の名前を示します。この名前は、この 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 クラスで以下のクラス・パラメータの一部または全部を指定できます。

DOMAIN
Parameter DOMAIN = "MyAppDomain";

この KPI が属するローカライズ・ドメインを指定します。詳細は、"DeepSee 実装ガイド" を参照してください。

FORCECOMPUTE

この KPI が MDX クエリ内で使用される場合 (つまり、%KPI 関数を介して)、DeepSee で常にこの KPI の値を再計算するかどうかを指定します。既定は false です。そのクエリが再実行されると、代わりにキャッシュの値が使用されます。

KPI で外部データを使用する場合、FORCECOMPUTE を true に設定すると便利な場合があります。

LABELCONCAT

CROSSJOIN または NONEMPTYCROSSJOIN を行に使用する MDX ベースの KPI で、ラベルを連結するために使用する文字を指定します。既定値はスラッシュ (/) です。

PUBLIC

KPI が、スコアカードおよび他のダッシュボード・ウィジェットで使用可能かどうか、および MDX %KPI 関数で使用可能かどうかを制御します。KPI をダッシュボードで使用できないようにする場合、クラスに PUBLIC クラス・パラメータを追加し、値を 0 に設定します。

RESOURCE
Parameter RESOURCE = "KPI_Resource";

この KPI を保護するリソースを指定します。これの使用法については、"DeepSee 実装ガイド" の “セキュリティの設定” を参照してください。

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 を速度計で表示すると、(既定では) 以下のようになります。

generated description: kpi range etc

速度計の値ボックスには、rangeUpper の値を超えていても、実際の KPI 値 (1000) が表示されていることがわかります。

プログラムによって範囲としきい値を設定することもできます。値をハードコードすることが不適切な場合は、その方法が便利です。“高度な KPI の定義” の章を参照してください。

Note:

ダッシュボードでスコアカードを構成する際、[下限のしきい値][上限のしきい値][範囲の下限]、および [範囲の上限] の各オプションがあります。KPI 属性 rangeLowerrangeUpperthresholdLower、および thresholdUpper は、これらのスコアカード・オプションに影響しないことに注意してください。

%CONTEXT フィルタの無効化

前述したように、MDX %KPI 関数を使用して、KPI の値を取得できます。MDX ベースの KPI の場合、%KPI 関数には、KPI にコンテキスト情報を渡すオプション・パラメータ (%CONTEXT) があります。既定では、このコンテキスト情報は、フィルタ節として MDX クエリに適用されます。この自動動作を無効にするには、以下のように、%GetMDXContextFilter() メソッドをオーバーライドします。

Method %GetMDXContextFilter() As %String
{
    Quit ""
}
FeedbackOpens in a new tab