Construction Project Dashboard Template — Earned Value, Float & RFI Control (Power BI)

Your team already pays $14 per user/month for Power BI Pro (Microsoft list price effective 1 April 2025) and it still opens on an empty canvas. Point this at your cost report, your P6/MS Project export and your RFI register, hit Refresh, and read CPI, SPI, Forecast at Completion, worst float and overdue RFIs on three pages.

Measures included (DAX) (8)

Cost Performance Index (Table: Cost Ledger)

DAX: DIVIDE(SUM('Cost Ledger'[Earned Value]), SUM('Cost Ledger'[Actual Cost to Date]))

Uses: 'Cost Ledger'[Earned Value], 'Cost Ledger'[Actual Cost to Date]

Format: 0.00

Schedule Performance Index (Table: Cost Ledger)

DAX: DIVIDE(SUM('Cost Ledger'[Earned Value]), SUM('Cost Ledger'[Planned Value]))

Uses: 'Cost Ledger'[Earned Value], 'Cost Ledger'[Planned Value]

Format: 0.00

Forecast at Completion (Table: Cost Ledger)

DAX: DIVIDE(SUM('Cost Ledger'[Original Budget]) + SUM('Cost Ledger'[Approved Change Orders]), DIVIDE(SUM('Cost Ledger'[Earned Value]), SUM('Cost Ledger'[Actual Cost to Date])))

Uses: 'Cost Ledger'[Original Budget], 'Cost Ledger'[Approved Change Orders], 'Cost Ledger'[Earned Value], 'Cost Ledger'[Actual Cost to Date]

Format: #,##0

Uncommitted Budget (Table: Cost Ledger)

DAX: SUM('Cost Ledger'[Original Budget]) + SUM('Cost Ledger'[Approved Change Orders]) - SUM('Cost Ledger'[Committed Cost])

Uses: 'Cost Ledger'[Original Budget], 'Cost Ledger'[Approved Change Orders], 'Cost Ledger'[Committed Cost]

Format: #,##0

Average Finish Variance Days (Table: Schedule Tasks)

DAX: AVERAGE('Schedule Tasks'[Finish Variance Days])

Uses: 'Schedule Tasks'[Finish Variance Days]

Format: 0.0

Worst Float Days (Table: Schedule Tasks)

DAX: MIN('Schedule Tasks'[Total Float Days])

Uses: 'Schedule Tasks'[Total Float Days]

Format: 0

Overdue Items (Table: Open Items)

DAX: SUM('Open Items'[Is Overdue])

Uses: 'Open Items'[Is Overdue]

Format: 0

Exposure from Open Items (Table: Open Items)

DAX: SUM('Open Items'[Cost Impact])

Uses: 'Open Items'[Cost Impact]

Format: #,##0

Columns your data must have (28)

Cost Ledger

ColumnTypeSummarize by
Project Namestring
Cost Codestring
Work Packagestring
Period End DatedateTime
Original Budgetdecimal
Approved Change Ordersdecimal
Committed Costdecimal
Actual Cost to Datedecimal
Earned Valuedecimal
Planned Valuedecimal

Header row: Project Name,Cost Code,Work Package,Period End Date,Original Budget,Approved Change Orders,Committed Cost,Actual Cost to Date,Earned Value,Planned Value

Schedule Tasks

ColumnTypeSummarize by
Project Namestring
Activity IDstring
Activity Namestring
Baseline FinishdateTime
Forecast FinishdateTime
Total Float Daysint64
Finish Variance Daysint64
Percent Completedouble
Is Criticalint64

Header row: Project Name,Activity ID,Activity Name,Baseline Finish,Forecast Finish,Total Float Days,Finish Variance Days,Percent Complete,Is Critical

Open Items

ColumnTypeSummarize by
Project Namestring
Item Typestring
Referencestring
Date RaiseddateTime
Response Due DatedateTime
Days Openint64
Is Openint64
Is Overdueint64
Cost Impactdecimal

Header row: Project Name,Item Type,Reference,Date Raised,Response Due Date,Days Open,Is Open,Is Overdue,Cost Impact

Report pages (3)

Get the complete version $69

This page is the working piece. The full pack has everything below.

Your team already pays $14 per user/month for Power BI Pro (Microsoft list price effective 1 April 2025) and it still opens on an empty canvas. Point this at your cost report, your P6/MS Pro

Microsoft's published list price is $14 per user/month for Power BI Pro and $24 per user/month for Premium Per User, both effective 1 April 2025. The licence is already bought — what is missing is the model that sits on it. This t

Send it to me
ENDEJAESPT

Find a tool