Skip to main content
EPC & Construction

Databricks Change Data Feed for Project Cost Control: Tracking BOQ and Actual-Cost Changes

On an EPC project, the question is never just "what is the cost now" — it is "what changed since last week, who changed it, and against which BOQ line". A snapshot cannot answer that. A change feed can.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

15 October 2026 · 9 min read

The bottom line

EPC project cost control is not a current-state question, it is a change question: what moved since the last report, against which bill-of-quantities line, and when. A nightly snapshot of the cost table answers "what is it now" but loses "what changed", which is exactly what project controls, the QS and the client need. Databricks Delta Change Data Feed (CDF) records the row-level changes to a Delta table — inserts, updates, deletes with before/after — so you can query the exact movements between any two points in time. Applied to BOQ and actual-cost tables, CDF lets you build a cost-movement view: committed-versus-actual deltas per line, when a budget line was revised, and a defensible audit trail from the current forecast back through every change. It turns cost control from a weekly snapshot into a continuous, traceable record of how the project got to today’s number.

Cost Control Is a Change Question

Ask a project controls manager what they need from the data and it is rarely the current cost alone. It is the movement: which BOQ lines moved since last week, by how much, committed versus actual; when a budget line was revised and to what; whether this period’s spend is tracking the forecast per line. Cost control lives in the deltas, not the snapshot.

The client and the QS ask the same shape of question in reviews. "The forecast went up — against which lines, and when did that happen?" A number that is simply higher than last month, with no record of how it got there, invites exactly the dispute a project controls function exists to prevent.

So the data problem is not storing the current cost — any system does that. It is retaining the changes over time in a way you can query, attribute and defend. That is where a plain nightly snapshot quietly fails.

Why a Snapshot Loses the Answer

The common pattern is to load the cost and BOQ tables into the lakehouse each night, overwriting yesterday’s with today’s. That gives a correct current state and throws away the one thing cost control needs: what changed between the two. Once yesterday’s version is overwritten, "what moved since last week" can only be reconstructed by comparing saved copies, if anyone thought to keep them.

Teams work around this by snapshotting daily into dated tables and diffing them, which balloons storage and still only captures change at snapshot granularity — a line revised and revised back between snapshots shows no change at all. It is a lot of machinery that approximates what the source database already knew: the actual sequence of changes.

What you want is the change itself, recorded natively, queryable between any two points — not a pile of daily copies you diff by hand. On a Databricks estate, Delta Change Data Feed provides exactly that.

A nightly overwrite keeps the current cost and throws away what changed — the one thing cost control actually needs. Dated snapshots approximate it, at the cost of storage and missed in-between revisions.

What Change Data Feed Records

Delta Change Data Feed is a Delta Lake feature that, once enabled on a table, records the row-level changes made to it — inserts, updates and deletes, with the before and after of each changed row and the version and timestamp at which it changed. You can then query the changes between any two versions or points in time, rather than just the current state.

This is the mechanism cost control needs. Enable CDF on the BOQ and actual-cost tables and the lakehouse retains not just today’s figures but the full sequence of how they changed — every revision to a BOQ line, every movement in committed or actual cost, with when and what it moved from and to. The change history becomes a first-class, queryable object rather than something reconstructed after the fact.

Because it reads the changes Delta already tracks, CDF does this without a pile of dated snapshot tables. One feed, queried by time range, answers "what changed between the last report and this one" directly — which is the question the whole function is built around.

Applied to BOQ and Actual Cost

In practice, CDF on the cost tables lets you build the views project controls actually report from. A cost-movement view shows, per BOQ line, the change in committed and actual cost between two dates — the period delta, sourced from the change feed rather than a manual diff. A revision log shows when each budget line was changed and to what, so a forecast increase is explained line by line rather than asserted as a total.

It also gives earned-value and variance reporting a firmer footing: because the history of every line is retained, you can show how the current cost-to-complete was arrived at, and trace any figure in the forecast back through its changes to the transactions that drove them. When the client questions a number in review, the answer is a path, not an assertion.

This pairs naturally with the measurement and BOQ discipline an EPC business already runs. The change feed does not replace the commercial process — it records it faithfully, so the data reflects the same sequence of revisions and measurements the QS worked through, available to query rather than locked in spreadsheets.

CDF on the BOQ and cost tables gives a per-line cost-movement view and a revision log — a forecast increase explained line by line, and any figure traceable back through its changes to the transactions behind it.

So What — a Traceable Cost Record

EPC cost control is a change-tracking problem wearing a reporting label. A nightly snapshot answers "what is the cost now" and loses "what changed, when, and against which line" — which is the question project controls, the QS and the client all actually ask. Delta Change Data Feed on the BOQ and actual-cost tables keeps that change history as a queryable record, so period movements, budget revisions and the path from forecast back to transaction are all available without a pile of dated snapshots.

The payoff is a cost function that can defend every movement rather than restate a total. "The forecast rose on these three lines, revised on these dates, driven by these commitments" is a statement that ends a review dispute; "it is higher than last month" starts one. We build Microsoft-first by default — on Fabric the equivalent is a change feed over the Delta tables in OneLake — and deliver this on Databricks with Change Data Feed where a client’s estate runs there. Either way, cost control stops being a snapshot and becomes a traceable record of how the project reached today’s number.

"The forecast rose on these three lines, revised on these dates, driven by these commitments" ends a review dispute. "It is higher than last month" starts one. CDF is what lets you say the first.

If your project forecasts move and the review always comes back to "against which line, and when", the fix is retaining the change, not the snapshot. 30 minutes with Amit on cost-movement tracking and a traceable BOQ-to-actual record for your projects. No slides, no pitch deck, no obligation to proceed.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

EPC & ConstructionDatabricksDelta LakeProject AnalyticsData Engineering

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

What is Databricks Change Data Feed used for in project cost control?

Delta Change Data Feed records the row-level changes to a Delta table — inserts, updates and deletes with before/after values and the version and timestamp of each change — so you can query exactly what moved between any two points in time. Applied to BOQ and actual-cost tables, it lets EPC project controls build a cost-movement view (committed-versus-actual deltas per line), a revision log (when each budget line changed and to what), and a traceable path from the current forecast back through every change to the underlying transactions.

Why is a nightly snapshot not enough for EPC cost control?

Because cost control lives in the deltas, not the current state. A nightly overwrite keeps today’s cost and discards what changed since yesterday, which is exactly what project controls, the QS and the client ask about in reviews. Dated snapshots approximate change history but balloon storage and miss revisions that happen and reverse between snapshots. A change feed records the actual sequence of changes natively and queryably instead.

How do you track BOQ revisions over time in a lakehouse?

Enable Change Data Feed on the BOQ table so every revision — the before and after of each changed line, with its timestamp — is retained as a queryable change history. You can then build a revision log showing when each budget line changed and to what, and explain a forecast movement line by line rather than asserting a total. On Microsoft Fabric the equivalent is a change feed over the Delta tables in OneLake.

Can you trace an EPC forecast number back to its source transactions?

Yes, when the change history is retained. With Change Data Feed on the cost and BOQ tables, the full sequence of changes to every line is queryable, so you can show how the current cost-to-complete was arrived at and trace any forecast figure back through its revisions to the commitments and transactions that drove them. That traceability is what turns a questioned number in a client review from an assertion into a defensible path.

Seeing this on your shop floor?

A short call, no obligation. Tell us what you’re trying to fix and we’ll tell you plainly if and how it’s solvable.