Skip to content

iDempiere レポートキューブの使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

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

レポートキューブは、会計仕訳の明細(Fact_Acct)を会計期間×選択したディメンション(品目・取引先・プロジェクト等)で事前集計しておくための設定マスタです。集計結果はサマリーテーブル(Fact_Acct_Summary)に格納され、財務レポートの実行時に明細を都度集計する代わりに参照されるため、大量データ環境でのレポート実行が大幅に高速化されます。

📌 ポイント: レポートキューブは「作れば自動で速くなる」ものではなく、集計データの再計算(更新)が必要です。前回再計算日時(Last Recalculated)以降に転記があった期間だけを差分更新する仕組みが組み込まれています。

レポートキューブでできること

Section titled “レポートキューブでできること”
  • 会計ファクトの期間別サマリーの事前計算(Fact_Acct_Summary への格納)
  • 集計に含めるディメンションの選択(品目・取引先・販売地域・プロジェクト・キャンペーン等 17 種類のフラグ)
  • 会計カレンダー単位での集計期間の指定
  • 前回再計算以降に変更のあった期間のみの差分再計算
  • 財務レポート実行時の集計済みデータ参照による高速化

レポートキューブは 1 タブのシンプルな構成です。

タブ名テーブル項目数役割
Report CubePA_ReportCube約24項目キューブ名・カレンダー・ディメンションフラグ・最終再計算日時
graph TD
    A["🚀 メニューから開く<br/>会計管理 > 会計レポート > レポートキューブ"] --> B["➕ 新規で名称・カレンダーを入力"]
    B --> C["📐 集計に含めるディメンションを<br/>チェックで選択<br/>(品目・取引先・プロジェクト等)"]
    C --> D["💾 保存"]
    D --> E["🔄 キューブの再計算を実行<br/>(Fact_Acct_Summary へ集計)"]
    E --> F["📊 財務レポートで<br/>キューブ集計を利用"]

メニューから開く 会計管理 > 会計レポート > レポートキューブ 新規で名称・カレンダーを入力 集計に含めるディメンションを チェックで選択 (品目・取引先・プロジェクト等) 保存 キューブの再計算を実行 (Fact_Acct_Summary へ集計) 財務レポートで キューブ集計を利用

⚠️ 注意: ディメンションのチェックを後から変更した場合、既存の集計データと設定が不整合になります。設定変更後は必ずキューブ全体の再計算を実施してください。

メニューから「会計管理 > 会計レポート > レポートキューブ」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称: キューブ名(例: 月次集計キューブ
    • カレンダー: 集計の基準となる会計カレンダー
  3. ディメンションを選択:
    • 集計軸として保持したいディメンションのみチェック(例: Product Dimension、Business Partner Dimension)
    • チェックしたディメンションが多いほどサマリー行数が増え、事前計算の効果が薄れます
  4. 保存」をクリック
項目名必須説明
名称必須文字列キューブの名称
説明-テキスト補足説明
カレンダー必須選択集計期間の基準となる会計カレンダー
Product Dimension-チェック品目をキューブのディメンションに含める
Business Partner Dimension-チェック取引先をディメンションに含める
販売地域ディメンション-チェック販売地域をディメンションに含める
Project Dimension-チェックプロジェクトをディメンションに含める
Campaign Dimension-チェックキャンペーンをディメンションに含める
Activity Dimension-チェック活動をディメンションに含める
GL Budget Dimension-チェックGL予算をディメンションに含める
OrgTrx Dimension-チェック取引組織をディメンションに含める
Sub Acct Dimension-チェック補助勘定をディメンションに含める
Last Recalculated自動日時最後に再計算した日時(差分更新の基準)

全項目(ユーザー要素・場所ディメンション等を含む 17 種類のフラグ)は 全項目一覧はリファレンス参照 をご覧ください。

Q. キューブの再計算はどのように動作しますか?

Section titled “Q. キューブの再計算はどのように動作しますか?”

前回再計算日時(Last Recalculated)が記録されている場合、それ以降に会計ファクトの変更があった期間だけを対象に、サマリーテーブルの該当期間データを削除してから再集計・挿入します(差分更新)。変更のあった期間がなければ「Nothing to update」で終了します。リセット指定時はキューブ全体を再計算します。

Q. 再計算が「Unable to lock cube for update」エラーになります

Section titled “Q. 再計算が「Unable to lock cube for update」エラーになります”

キューブの再計算中は Processing フラグを Y に更新して排他ロックを取得します。既に別の再計算が実行中(Processing='Y' のまま)の場合はロックが取得できずエラーになります。実行中の処理完了を待つか、異常終了で Processing='Y' が残留していないかを確認してください。

Q. どのレポートでキューブが使われますか?

Section titled “Q. どのレポートでキューブが使われますか?”

財務レポート(FinReport)がレポートキューブに対応しています。レポート実行時にキューブを指定すると、明細(Fact_Acct)ではなく事前集計済みの Fact_Acct_Summary を参照します。詳細は 財務諸表・会計レポート を参照してください。

Q. ディメンションはすべてチェックした方がよいですか?

Section titled “Q. ディメンションはすべてチェックした方がよいですか?”

いいえ。チェックしたディメンションの組み合わせごとにサマリー行が生成されるため、ディメンションが多いほど集計行数が増え、事前計算のメリットが減ります。実際にレポートの集計軸として使うディメンションのみを選択してください。

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

レポートキューブは PA_ReportCube テーブル(アクセスレベル: Client+Org)に格納される設定マスタで、MReportCube クラス(257行)が Fact_Acct_Summary の再集計ロジックを担います。Document 型ではありません(DocAction なし)。

classDiagram
    class MReportCube {
        +update(boolean reset, boolean force) String
        +getChangedPeriodKeyNamePairs() KeyNamePair[]
    }
    class X_PA_ReportCube {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    MReportCube --|> X_PA_ReportCube
    X_PA_ReportCube --|> PO
    MReportCube ..> Fact_Acct_Summary : DELETE + INSERT
    FinReport ..> MReportCube : uses summary

+update(boolean reset, boolean force) String +getChangedPeriodKeyNamePairs() KeyNamePair[] <> <> > X_PA_ReportCube X_PA_ReportCube --

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

PA_ReportCube(レポートキューブ)

Section titled “PA_ReportCube(レポートキューブ)”
カラム名必須説明備考
PA_ReportCube_IDIDPKレポートキューブID主キー
AD_Client_IDTableDirectYクライアント
AD_Org_IDTableDirectY組織
NameString(60)Y名称識別子
DescriptionText(255)N説明
C_Calendar_IDTableDirectY会計カレンダー集計期間の基準
IsProductDim ほか計17フラグYesNoNディメンションフラグ品目/取引先/販売地域/OrgTrx/活動/キャンペーン/プロジェクト(+フェーズ/タスク)/GL予算/場所From・To/補助勘定/ユーザー要素1・2/ユーザーカラム1・2
LastRecalculatedDate+TimeN最終再計算日時差分更新の基準
ProcessingYesNoY処理中フラグ再計算の排他ロック。default N

MReportCube.update() が Fact_Acct_Summary 再集計の本体です:

  1. 差分期間の特定: LastRecalculated があり reset=false の場合、getChangedPeriodKeyNamePairs() で前回再計算以降に変更のあった会計期間のみを抽出。変更期間がなければ Nothing to update で終了
  2. 排他ロック: force=false の場合、UPDATE PA_ReportCube SET Processing='Y' WHERE Processing='N' でロック取得。取得できなければ AdempiereException(Unable to lock cube for update)
  3. 削除: DELETE FROM Fact_Acct_Summary を対象キューブ(差分更新時は対象期間)に対して実行
  4. 挿入: INSERT INTO Fact_Acct_Summary ... SELECT で Fact_Acct を期間・会計スキーマ・勘定科目・転記タイプ・GL予算(+選択ディメンション)でグループ化し、SUM(AmtAcctDr) / SUM(AmtAcctCr) / SUM(Qty) を集計して格納

PA_ReportCube 自体に callout はありません。一般的な拡張手段:

  • Model Validator: PA_ReportCube の保存前後に独自チェックを追加(例: 命名規則、ディメンション数の上限)
  • カスタムプロセス: MReportCube.update(reset, force) を呼び出す独自のスケジュール再計算プロセスを OSGi プラグインとして実装可能(夜間バッチでの全キューブ更新等)
プロセス名説明
キューブ再計算(Recalculate Cube)Fact_Acct_Summary を再集計(内部で MReportCube.update() を実行)

レポートキューブの再計算スケジューリングや独自集計軸の追加は、OSGi プラグインでコア改変なしに実現できます。大量仕訳環境での財務レポート高速化もご相談ください。

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

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