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 定義とカラムマッピング |
基本操作手順
Section titled “基本操作手順”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/>測定タイプ=計算 として参照"]
アクセス方法
Section titled “アクセス方法”メニューから「会計管理 > パフォーマンス測定 > パフォーマンス測定計算」を開きます。
- ツールバーの「新規」ボタンをクリック
- 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) - 取引先カラム/品目カラム: ゴール制限と連動させる場合に指定
- 名称: 計算名(例:
- ドリルダウン設定:
- テーブル: 対象テーブル(例:
C_Order) - キーカラム: キー(例:
C_Order_ID)
- テーブル: 対象テーブル(例:
- 「保存」をクリック
⚠️ 注意: SELECT / FROM / WHERE キーワードは大文字で記述してください。実行時にキーワード位置を検出して期間・制限条件を差し込むため、小文字だと正しく展開されません。また、複数テーブルを JOIN する場合、WHERE 句で使えるのはメインテーブルのカラムのみで、カラムはすべて完全修飾(別名付き)にします。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | 計算定義の名称 |
| エンティティタイプ | 必須 | 選択 | 辞書エンティティタイプ(通常は User maintained) |
| SQL SELECT句 | 必須 | テキスト | 単一値を返す SELECT〜FROM |
| SQL WHERE句 | 必須 | テキスト | 固定の絞り込み条件 |
| 日付カラム | 必須 | 文字列 | 期間絞り込みに使う完全修飾日付カラム |
| 組織カラム | 必須 | 文字列 | 組織絞り込み用の完全修飾カラム |
| 取引先カラム | - | 文字列 | ゴール制限(取引先)連動用 |
| 品目カラム | - | 文字列 | ゴール制限(品目)連動用 |
| テーブル | 必須 | 選択 | ドリルダウン対象テーブル |
| キーカラム | 必須 | 文字列 | 対象テーブルのキーカラム |
全項目の一覧は 画面リファレンス を参照してください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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())を持ちます。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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 で適用
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MMeasureCalc.java
関連DBテーブル
Section titled “関連DBテーブル”PA_MeasureCalc(測定計算)
Section titled “PA_MeasureCalc(測定計算)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| PA_MeasureCalc_ID | ID | PK | 測定計算ID | 主キー |
| Name | String(60) | Y | 名称 | |
| EntityType | Table | Y | エンティティタイプ | デフォルトはシステム設定から導出 |
| SelectClause | Text(2000) | Y | SELECT句 | デフォルト例 SELECT ... FROM ... |
| WhereClause | Text(2000) | Y | WHERE句 | デフォルト例 WHERE ... |
| DateColumn | String(124) | Y | 日付カラム | デフォルト例 x.Date |
| OrgColumn | String(124) | Y | 組織カラム | デフォルト例 x.AD_Org_ID |
| BPartnerColumn | String(124) | N | 取引先カラム | デフォルト例 x.C_BPartner_ID |
| ProductColumn | String(124) | N | 品目カラム | デフォルト例 x.M_Product_ID |
| AD_Table_ID | TableDirect | Y | 対象テーブル | ドリルダウン用 |
| KeyColumn | String(124) | Y | キーカラム | ドリルダウン用 |
ビジネスロジック
Section titled “ビジネスロジック”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 構築]
getSqlPI(...)— ゴールの実績値(単一値)取得 SQL を合成。MMeasure.updateGoals()から呼ばれますgetSqlBarChart(...)— 期間別の棒グラフ用集計 SQL を合成(ダッシュボード表示)addRestrictions(sql, queryOnly, restrictions, role, ...)— ゴール制限とロールの組織アクセス権を WHERE 条件として追記する static ユーティリティgetQuery(...)— グラフクリック時のドリルダウン用MQueryを構築
MMeasureCalc に beforeSave 等の保存時検証はありません。SQL の妥当性は実行時に評価されるため、登録後に必ずダッシュボード等で動作確認してください。
拡張ポイント
Section titled “拡張ポイント”- SQL で表現できない KPI: 測定計算ではなく、パフォーマンス測定の「計算クラス」(
CalculationClass、Measure インターフェース実装)で Java ロジックとして実装します - Model Validator: SQL 構文の事前チェック(SELECT/FROM の大文字検証等)を
PA_MeasureCalcへのTYPE_BEFORE_NEW/CHANGEバリデータで追加すると運用事故を防げます - このテーブルに標準の callout はありません
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”SQL では表現しづらい独自 KPI(複合指標・外部データ連携等)は、Measure 計算クラスの実装でコア改変なしに追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。