
Summary
この文書の要点
- 突合キー、丸め規則、集計期間を明示する。
- 完全一致だけでなく許容差を扱う。
- 入力範囲、計算式、丸め、締め日、除外条件を突合メタデータとして保存する。
- 差分は金額不一致、件数不一致、存在差分、丸め差分に分けて出す。
どこが設計の難所か
Webアプリへ集計機能を移すと、既存Excelと数字が合わないことがあります。原因は計算ミスだけでなく、対象期間、除外条件、丸め、入力データの差である場合があります。
Excel側の計算式が複雑だったり、手入力補正が入っていたりすると、完全な再現は難しくなります。突合では、どの差分を許容し、どの差分を修正対象にするかを決める必要があります。
既存のExcel集計と新しいDB集計を比べると、数字が完全一致しないことがあります。その差は実装ミスだけでなく、丸め、締め範囲、手動補正、古い計算式、除外ルールの違いから生まれます。
境界をどう切るか
突合バッチでは、Excel由来データとDB集計結果を同じキーと同じ期間で比較します。差分は金額差、件数差、対象外、キー不一致、丸め差などに分類します。
設計では、Excelファイルを単なる比較元ではなく、計算ルールを含む既存仕様として扱います。突合バッチは、集計結果だけでなく、どの条件で集計したかを保存し、差分を分類します。
実装で効く細部
取り込み時にExcelの元ファイル、シート名、行番号、取り込み時刻を保存します。DB集計側はSQLまたは集計関数で再計算し、比較結果をテーブルに保存します。レポートはCSVや画面で確認できるようにします。
TypeScriptのバッチでは、Excel読み取り、正規化、DB集計、突合、レポート生成を分けます。差分レコードにはkey、excel_value、db_value、diff_type、tolerance、noteを持たせ、後から確認者が判断できる形にします。
- Excelの空欄、文字列数値、日付シリアルを正規化してから比較する。
- 許容誤差を項目ごとに持ち、丸め差分と実差分を分ける。
- 手動補正がある場合は、補正値を別データとして取り込み、元値を上書きしない。
壊れ方を観測する
検証では、既知の差分を含むテストデータを用意し、分類が期待通りになるか確認します。丸め規則や日付境界は特に差が出やすいため、境界値テストを入れます。
検証では、過去の代表月を複数使い、差分の分類が妥当かを確認します。単に一致率を見るのではなく、差分が説明可能か、修正すべき実装差分か、業務ルール差分かをレビューします。
捨てた選択肢とトレードオフ
突合バッチを作ると移行コストは増えます。しかし、数字が合わない理由を人が毎回調べるより、差分分類を自動化した方が移行判断は早くなります。
Excelに合わせすぎると古い誤りを新システムへ引き継ぎます。DB集計に寄せすぎると現場の既存数字と会話できません。移行期間は両方を並べ、差分理由を減らしていく進め方が現実的です。
現場に残す判断軸
Excel移行では、数字が合うかどうかだけでなく、合わない理由を説明できることが重要です。突合バッチは、移行中の信頼を作るための実務的な道具になります。
突合バッチの役割は、数字を合わせることだけではありません。差分を分類し、どのルールを正とするかを決める材料を作ることが本質です。


