Skip to content

iDempiere パフォーマンス測定計算の使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

パフォーマンス測定計算は、KPI の実績値をどの SQL で算出するかを定義するウィンドウです。ここで定義した計算式をパフォーマンス測定(測定タイプ=計算)から参照し、ゴールの実績値として集計されます。

📌 ポイント: SQL は「単一の数値を返す SELECT 文」である必要があります。日付・組織・取引先・品目の各カラム名を宣言しておくことで、ゴール側の期間指定や制限(絞り込み)が WHERE 句に自動追加されます。

パフォーマンス測定計算でできること

Section titled “パフォーマンス測定計算でできること”
  • KPI 実績値を算出する SQL(SELECT 句・WHERE 句)の定義
  • 期間絞り込みに使う日付カラムの宣言(日付制限はゴール側で指定)
  • 組織・取引先・品目カラムの宣言によるゴール制限との連動
  • ドリルダウン用の対象テーブル・キーカラムの指定
  • 標準搭載の計算定義(売上高・受注残など)の参照・複製

単一タブの設定マスタです。

タブ名テーブル項目数役割
測定計算PA_MeasureCalc約13項目SQL 定義とカラムマッピング
graph TD
    A["🚀 メニューから開く<br/>会計管理 > パフォーマンス測定 > パフォーマンス測定計算"] --> B["📋 標準の計算定義を確認<br/>(類似のものを参考にする)"]
    B --> C["➕ 新規で SQL を定義<br/>SELECT 句 / WHERE 句"]
    C --> D["📅 日付・組織カラムを宣言<br/>(例: o.DateOrdered / o.AD_Org_ID)"]
    D --> E["🔗 テーブルとキーカラムを指定<br/>(ドリルダウン用)"]
    E --> F["💾 保存"]
    F --> G["🎯 パフォーマンス測定で<br/>測定タイプ=計算 として参照"]

メニューから開く 会計管理 > パフォーマンス測定 > パフォーマンス測定計算 標準の計算定義を確認 (類似のものを参考にする) 新規で SQL を定義 SELECT 句 / WHERE 句 日付・組織カラムを宣言 (例: o.DateOrdered / o.AD_Org_ID) テーブルとキーカラムを指定 (ドリルダウン用) 保存 パフォーマンス測定で 測定タイプ=計算 として参照

メニューから「会計管理 > パフォーマンス測定 > パフォーマンス測定計算」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. SQL 定義を入力:
    • 名称: 計算名(例: 完了受注金額
    • SQL SELECT句: 単一値を返す SELECT〜FROM(例: SELECT SUM(GrandTotal) FROM C_Order o
    • SQL WHERE句: 固定条件(例: WHERE o.IsSOTrx='Y' AND o.DocStatus IN ('CO','CL')
    • 日付カラム: 期間絞り込みに使う完全修飾カラム(例: o.DateOrdered
    • 組織カラム: 組織絞り込み用(例: o.AD_Org_ID
    • 取引先カラム/品目カラム: ゴール制限と連動させる場合に指定
  3. ドリルダウン設定:
    • テーブル: 対象テーブル(例: C_Order
    • キーカラム: キー(例: C_Order_ID
  4. 保存」をクリック

⚠️ 注意: SELECT / FROM / WHERE キーワードは大文字で記述してください。実行時にキーワード位置を検出して期間・制限条件を差し込むため、小文字だと正しく展開されません。また、複数テーブルを JOIN する場合、WHERE 句で使えるのはメインテーブルのカラムのみで、カラムはすべて完全修飾(別名付き)にします。

項目名必須説明
名称必須文字列計算定義の名称
エンティティタイプ必須選択辞書エンティティタイプ(通常は User maintained)
SQL SELECT句必須テキスト単一値を返す SELECT〜FROM
SQL WHERE句必須テキスト固定の絞り込み条件
日付カラム必須文字列期間絞り込みに使う完全修飾日付カラム
組織カラム必須文字列組織絞り込み用の完全修飾カラム
取引先カラム-文字列ゴール制限(取引先)連動用
品目カラム-文字列ゴール制限(品目)連動用
テーブル必須選択ドリルダウン対象テーブル
キーカラム必須文字列対象テーブルのキーカラム

全項目の一覧は 画面リファレンス を参照してください。

Q. SQL が複数行・複数列を返すとどうなりますか?

Section titled “Q. SQL が複数行・複数列を返すとどうなりますか?”

正しく動作しません。測定計算の SQL は「単一の数値」を返す前提で実行されます(合計値取得用の getSqlPI())。SUM() 等の集約関数で必ず 1 値に集約してください。

Q. 期間(日付範囲)はどこで指定しますか?

Section titled “Q. 期間(日付範囲)はどこで指定しますか?”

この画面では指定しません。日付の絞り込みはゴール側の測定スコープ・開始/終了日付から実行時に生成され、ここで宣言した「日付カラム」に対する条件として WHERE 句へ自動追加されます。

Q. ゴールの制限タブで品目を絞ったのに効きません。

Section titled “Q. ゴールの制限タブで品目を絞ったのに効きません。”

この計算定義の「品目カラム」が空の可能性があります。制限(組織・取引先・品目)は、対応するカラムが宣言されている場合のみ addRestrictions() で WHERE 句に追加されます。宣言がないディメンションの制限は無視されます。

Q. ダッシュボードのグラフから明細へ飛べるのはなぜですか?

Section titled “Q. ダッシュボードのグラフから明細へ飛べるのはなぜですか?”

「テーブル」「キーカラム」の定義から getQuery() がズーム用の MQuery を構築するためです。グラフのバーをクリックすると該当期間・条件のレコード一覧へドリルダウンできます。

🛠 技術仕様(開発者向け)

パフォーマンス測定計算は PA_MeasureCalc テーブル(MMeasureCalc クラス・699行)に格納されます。MMeasureCalc は宣言された SQL 断片から実行時に集計 SQL・グラフ用 SQL・ドリルダウンクエリを合成するビルダー的なクラスで、ImmutablePOSupport パターンのキャッシュ参照(MMeasureCalc.get())を持ちます。

classDiagram
    class MMeasureCalc {
        +get(PA_MeasureCalc_ID) MMeasureCalc
        +getSqlPI(restrictions, scope, type, reportDate, role) String
        +getSqlPIFragment(...) SQLFragment
        +getSqlBarChart(restrictions, ...) String
        +getSqlBarChartFragment(...) SQLFragment
        +getQuery(restrictions, ...) MQuery
        +addRestrictions(sql, queryOnly, ...) String
        +getTableName() String
    }
    class X_PA_MeasureCalc {
        <<generated>>
    }
    class MMeasure {
        +updateGoals() boolean
    }
    MMeasureCalc --|> X_PA_MeasureCalc
    MMeasure --> MMeasureCalc : MeasureType=Calculated
    MMeasureCalc --> MGoalRestriction : addRestrictions で適用

+get(PA_MeasureCalc_ID) MMeasureCalc +getSqlPI(restrictions, scope, type, reportDate, role) String +getSqlPIFragment(...) SQLFragment +getSqlBarChart(restrictions, ...) String +getSqlBarChartFragment(...) SQLFragment +getQuery(restrictions, ...) MQuery +addRestrictions(sql, queryOnly, ...) String +getTableName() String <> +updateGoals() boolean

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MMeasureCalc.java

カラム名必須説明備考
PA_MeasureCalc_IDIDPK測定計算ID主キー
NameString(60)Y名称
EntityTypeTableYエンティティタイプデフォルトはシステム設定から導出
SelectClauseText(2000)YSELECT句デフォルト例 SELECT ... FROM ...
WhereClauseText(2000)YWHERE句デフォルト例 WHERE ...
DateColumnString(124)Y日付カラムデフォルト例 x.Date
OrgColumnString(124)Y組織カラムデフォルト例 x.AD_Org_ID
BPartnerColumnString(124)N取引先カラムデフォルト例 x.C_BPartner_ID
ProductColumnString(124)N品目カラムデフォルト例 x.M_Product_ID
AD_Table_IDTableDirectY対象テーブルドリルダウン用
KeyColumnString(124)Yキーカラムドリルダウン用

SQL 合成の流れ:

flowchart TD
    A[SelectClause + WhereClause] --> B[getSqlPI / getSqlBarChart]
    B --> C[測定スコープから日付範囲を生成<br/>DateColumn に条件追加]
    C --> D[addRestrictions<br/>ゴール制限を各カラムに展開<br/>(組織/取引先/品目 + ロール組織権限)]
    D --> E[単一値 SQL を実行 → MeasureActual]
    B2[getQuery] --> F[AD_Table_ID + KeyColumn から<br/>ドリルダウン MQuery 構築]

SelectClause + WhereClause getSqlPI / getSqlBarChart 測定スコープから日付範囲を生成 DateColumn に条件追加 addRestrictions ゴール制限を各カラムに展開 (組織/取引先/品目 + ロール組織権限) 単一値 SQL を実行 → MeasureActual AD_Table_ID + KeyColumn から ドリルダウン MQuery 構築

  • getSqlPI(...) — ゴールの実績値(単一値)取得 SQL を合成。MMeasure.updateGoals() から呼ばれます
  • getSqlBarChart(...) — 期間別の棒グラフ用集計 SQL を合成(ダッシュボード表示)
  • addRestrictions(sql, queryOnly, restrictions, role, ...) — ゴール制限とロールの組織アクセス権を WHERE 条件として追記する static ユーティリティ
  • getQuery(...) — グラフクリック時のドリルダウン用 MQuery を構築

MMeasureCalc に beforeSave 等の保存時検証はありません。SQL の妥当性は実行時に評価されるため、登録後に必ずダッシュボード等で動作確認してください。

  • SQL で表現できない KPI: 測定計算ではなく、パフォーマンス測定の「計算クラス」(CalculationClass、Measure インターフェース実装)で Java ロジックとして実装します
  • Model Validator: SQL 構文の事前チェック(SELECT/FROM の大文字検証等)を PA_MeasureCalc への TYPE_BEFORE_NEW/CHANGE バリデータで追加すると運用事故を防げます
  • このテーブルに標準の callout はありません

SQL では表現しづらい独自 KPI(複合指標・外部データ連携等)は、Measure 計算クラスの実装でコア改変なしに追加できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら