Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

基本的な 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 のモデルの定義" の "モデル・オプションの概要" を参照してください。

KPI クエリの要件

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

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

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

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

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

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

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

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

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

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

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

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

A pivot table with PatientIDs in the rows and columns for Patient Count, Age, and Allergy Count.

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

KPI 結果セットの構造

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

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

A KPI result set, where each series represents a city and the properties are Patient Count and Population.

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

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

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

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

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

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

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

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

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

    • [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 つのアクション名を入力します。

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

  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 です。

    このクラスには、さまざまなメソッドのスタブ定義も含まれています。既定では、これらは何も実行しません。詳細は、"フィルタおよびリストを含む KPI の定義" および "高度な KPI の定義" も参照してください。

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

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

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

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

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

    A KPI Test Page in Studio, showing the KPI class name, any Filters, the MDX Query, and the KPI values.

    [系列] 列は、各系列の名前を示します。この名前は、この 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 が属するローカライズ・ドメインを指定します。詳細は、"InterSystems Business Intelligence の実装" を参照してください。

FORCECOMPUTE

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

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

LABELCONCAT

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

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

A dial-shaped speedometer, with the needle pointing to 900 (the maximum) and a box at the bottom showing a value of 1000.

速度計の値ボックスには、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