Dashboards, KPIs and Power BI

Last reviewed 9 September 20262,506 words11 min read

Twelve numbers from the schedule, refreshed at the data date โ€” and nothing the schedule does not already know

๐ŸŸฉ In one line: A planning dashboard shows a fixed set of KPIs read directly from the rescheduled update โ€” variance, movement, CPLI, BEI, SPI, productivity factor, PPC, near-critical count, open constraints, procurement float, notices, EV percent โ€” with thresholds fixed in the SBM; it refreshes once per data date from an archived export, and it never calculates a date or a float that P6 did not.

๐Ÿ‘ค Who this is for: Mid-level planners asked for "a dashboard"; senior planners setting up a PMO reporting model. Prerequisites: Slippage-and-trend-analysis, Cpli-and-bei, Earned-value-basics-spi-cpi, Reading-an-xer-in-excel.

e / c
First, let's be honest about why this page exists

Dashboards fail in one of two ways. The first is decoration: a Power BI page of donuts and speedometers built by someone who never opened the schedule, coloured green because activity count complete is 61 %. The second is duplication: the dashboard recalculates float from start and finish dates in DAX, disagrees with P6 by four days, and the meeting spends forty minutes on which number is right.

The schedule already computes everything worth showing. The dashboard's job is to read it, trend it and threshold it โ€” once a month, from the same file the Engineer received โ€” so that the PMO and the project director see the same twelve numbers the narrative states, one screen at a time.

๐ŸŸจ The standard โ€” what "good" looks like
SourceWhat it says (paraphrased)Use it for
DCMA 14-Point Assessment, items 13 and 14CPLI and BEI defined with thresholds (0.95); computed against the baselineTwo of the twelve, with their thresholds
GAO Schedule Assessment Guide, Best Practices 8 and 9Progress updates traceable; schedule and cost data integrated and consistentDashboard data must trace to the update
PMI Standard for Earned Value Management (2019)SPI, CPI, SV, CV definitions (check against your copy)EV KPIs
AACE RP 38R-06Reporting metrics, thresholds and their basis documented in the SBMKPI definitions live in the SBM, not in the .pbix
FIDIC 1999 Cl 4.21 / 2017 Cl 4.20Progress report compares planned and actual progressDashboard is an internal view of the same numbers
Hub conventionTrend register one row per DD, never reset; thresholds CPLI/BEI/SPI 0.95; PPC <60 % fiction, >85 % working; near-critical 10โ€“20 wd buildings; slippage ratio 0.3 modest / 1.0 standstill; PF earned รท actual; dashboard refresh at DD from archived exportYour KPIs and thresholds

๐ŸŸข Rule: every dashboard number has a source field in P6 or a register, a threshold in the SBM, and a matching value on page one of the monthly report โ€” if the three disagree, the dashboard is wrong.

How it actually works

1. The twelve KPIs. Fixed at baseline, in the SBM, with source and threshold. Add a thirteenth only with a baseline revision.

#KPIDefinitionSourceGreenAmberRed
1Variance to contract (wd)Forecast contractual completion โˆ’ contract date, working days, per SectionLayout 04 / trend registerโ‰ฅ 0โˆ’1 to โˆ’10< โˆ’10
2Movement (wd)Forecast this DD โˆ’ forecast previous DDTrend registerโ‰ฅ 0โˆ’1 to โˆ’5< โˆ’5
3Slippage ratioMovement รท working days in periodTrend register< 0.30.3โ€“1.0> 1.0
4CPLI(CPL + TF) รท CPL to contractual completionP6 fieldsโ‰ฅ 1.000.95โ€“0.99< 0.95
5BEIActivities finished รท baseline finish โ‰ค DD (excl. LOE/WBS Summary)P6 exportโ‰ฅ 0.950.90โ€“0.94< 0.90
6SPI (hours)EV รท PV labour unitsP6 EVโ‰ฅ 0.950.90โ€“0.94< 0.90
7Planned vs earned %PV รท BAC and EV รท BACP6 EVgap โ‰ค 3 pts3โ€“6> 6
8Productivity factor (period)Earned mh รท actual mh, last 4โ€“6 wk, by tradeProductivity workbookโ‰ฅ 0.950.85โ€“0.94< 0.85
9PPC (4-wk avg)Committed complete รท committedWeekly workbook> 85 %60โ€“85 %< 60 %
10Near-critical countActivities with 0 < TF โ‰ค threshold, not LOELayout 04โ‰ค 5 % of remaining5โ€“10 %> 10 %
11Open constraints / interfaces overdueCount with clear-by < DDConstraint & interface registers01โ€“5> 5
12Procurement items with negative floatCount from long-lead registerProcurement register01โ€“2โ‰ฅ 3

Notices issued / open and EOT days claimed / awarded appear as counts beside KPI 1 without a colour โ€” they are facts, not performance.

2. Getting the data out of P6. Three routes, in order of preference:

RouteHowUseCaution
Excel export from layoutsFile โ†’ Export โ†’ Spreadsheet (XLS/XLSX): activities with the columns you need, plus resource assignments (check against your P6 version)Default; one export per DD, archived with the XERExport exactly the columns the model expects; save the export template
XER parsedThe archived XER read in Excel/Power Query by table (TASK, PROJWBS, TASKPRED, TASKRSRC, ACTVCODE, UDFVALUE) โ€” see Reading-an-xer-in-excelWhen the model needs relationships or codes not in a layoutHours are stored as hours; durations in hours รท hours/day of the activity's calendar
Read-only database connectionODBC to the P6 database via a reporting user with read-only rights, or the Oracle Primavera Cloud / EPPM reporting viewsEnterprise PMO, many projectsAdmin creates the user; never the planner's login; still snapshot at DD โ€” a live connection shows a half-updated schedule

Whichever route: one refresh per data date, from the archived export of the accepted update, tagged with Update number and DD. Weekly data (PPC, PF) refreshes weekly from the workbooks and is labelled as such.

3. The data model. Five tables and a date table. Keep it that small.

TableGrainKey fields
ActivitiesOne row per activity per updateUpdate ID, DD, Activity ID, WBS, OD, RD, Start, Finish, Actual Start/Finish, TF, Physical %, Longest Path flag, activity type, BL Project Start/Finish, codes (Area, Level, Discipline, Subcontractor, Responsibility, Milestone Type), Budgeted/Actual/Remaining Units, PV/EV
TrendOne row per DD per SectionAll trend-register columns
RegistersOne row per item per updateConstraints, interfaces, procurement, notices, changes โ€” with status and clear-by
WeeklyOne row per weekPPC, reasons by category, headcount by trade
ProductivityOne row per trade per week per areaEarned, actual, PF, impact tag
DateOne row per dayWorking-day flag per project calendar (from the calendar list in the SBM)

Relationships: Activities โ†’ Date on DD; everything โ†’ Update ID. Do not build a relationship table for logic in the dashboard; the critical path is a flag from P6, not something the dashboard derives.

4. The measures โ€” what the dashboard may and may not compute.

May computeMust read from P6 / register
Counts, sums, ratios of exported fields (BEI, near-critical count, PV/EV ratios)Total float, longest path, early/late dates, forecast completion
Period-over-period differences (movement, slippage ratio) from the trend tableCPLI inputs (CPL and TF at the milestone)
Threshold colouringAnything involving calendars or relationships
Trend lines and averagesEV technique and baseline selection

Working days between two dates come from the Date table's working-day flag for the relevant calendar, never from a 5-day network function.

5. The pages. Four, in reading order, matching the monthly report.

PageContent
StatusTwelve KPIs with colours; contract vs forecast per Section; driver activity ID; Update and DD stamp; baseline name
TrendVariance, movement, CPLI, BEI, SPI as lines over all DDs; baseline revisions as vertical markers; slippage ratio bars
Drill-downActivities table filterable by Area/Level/Discipline/Subcontractor: RD, TF, variance to baseline, Physical %; near-critical list; longest-path chain in order
ReadinessOpen constraints, interfaces overdue by party, procurement negative-float items, PPC trend, PF by trade

Every page carries "Source: Update NN, DD dd-MMM-yy, BLn-Accepted-โ€ฆ, refreshed dd-MMM" in the footer.

6. Governance. Thresholds and definitions in SBM section 13; changed only with a baseline revision. The .pbix and the export files archived per DD with the XER. Access to the Engineer's-facing pages limited to the KPIs that appear in the monthly report; PPC and PF are internal. The planner owns the refresh; the PMO owns the visuals; nobody edits data in the model.

๐ŸŸฅ Where people go wrong
  1. Float recomputed in DAX. Finish minus late finish on a 5-day network function, disagreeing with P6 by the calendar difference. Float is a field read from P6, full stop.
  2. Percent complete by activity count. 1,600 of 2,800 done = 57 % green. LOE, milestones and 2-day activities count the same as a 40-day slab. Weight by manhours or cost, as the S-curve does.
  3. Live database connection during the update. The director opens the dashboard on DD + 1 while half the actuals are in and sees a 60-day slip. Snapshot at the archived export, tagged with the Update number.
  4. Thresholds set in the visual. Someone changes red to start at โˆ’20 to make the page calmer. Thresholds in the SBM, referenced in the model, changed only with a revision.
  5. Dashboard numbers differ from the report. The report used the accepted update; the dashboard was refreshed from a Reflection. One export, one source, one Update ID on both.
  6. Building the logic network in Power BI. Relationship tables, path tracing, "our own critical path". It is a second scheduling engine that will disagree with the first. Longest Path flag from P6.
  7. Thirty KPIs. Nobody reads them, and the ones that matter get lost. Twelve, fixed, each with a source and a threshold.
โš–๏ธ When you're challenged

"The dashboard says 57 % complete and your report says 46 %. Which is it?" Forty-six. The 57 is activity count, which the dashboard shouldn't be showing โ€” it counts a milestone the same as a slab. Earned manhours over budget is 46.3 %, same as the S-curve and the narrative; I've removed the count visual.

"Can we have the dashboard live, updated daily?" Weekly data โ€” PPC, headcount, productivity โ€” can refresh weekly from the workbooks. Schedule data can only be as current as the last reschedule, which is monthly. A daily feed from the database would show a half-statused file for a week every month and a different completion date every day.

"Why is CPLI amber when float is still positive?" CPLI is 0.97: four days of float on a 130-day remaining longest path, which is inside the amber band from the SBM. Positive, but thin โ€” that's exactly what the amber is for.

"Just give the PMO a login to P6." A read-only reporting user on the database is fine if the admin sets it up; a P6 client login isn't, because one accidental F9 or baseline change in the live project can't be undone. The dashboard reads the archived export of the accepted update, which is the same thing the Engineer received.

๐Ÿ“„ Related pages
โœ๏ธ Worked example โ€” Jeddah hospital, dashboard status page at Update 15 (DD 25-Aug)
#KPIValueColourSource
1Variance โ€” Block 2 / Wholeโˆ’18 wd / โˆ’6 wdRed / AmberLayout 04
2Movementโˆ’4 wd / โˆ’1 wdAmber / AmberTrend register
3Slippage ratio0.17 / 0.04GreenTrend register
4CPLI (Whole)0.96AmberP6
5BEI0.88RedExport: 412 รท 468
6SPI (hours)0.92AmberP6 EV
7Planned / earned %44.4 / 41.0 (gap 3.4)AmberP6 EV
8PF period โ€” MEP / finishes / structure0.83 / 0.79 / 0.98Red / Red / GreenProductivity workbook
9PPC (4-wk)68 %AmberWeekly workbook
10Near-critical count96 of 1,410 remaining (6.8 %)AmberLayout 04, TF โ‰ค 15
11Overdue constraints / interfaces4 (2 Engineer, 1 utility, 1 MC)AmberRegisters
12Procurement negative float1 (MRI, Employer-supplied)AmberLong-lead register
โ€”Notices open / EOT claimed / awarded3 / 22 wd / 0 wdโ€”Notice register

Footer: "Source Update 15, DD 25-Aug, BL1-Accepted-DD 25Feb-Rev1; activities export Jeddah-H_Upd15_DD25Aug_v01.xlsx; weekly data to w/e 21-Aug; refreshed 28-Aug."

Read: Twelve numbers, all traceable to the report's page one and sections 4โ€“9. The drill-down page filtered to Block 2 โ†’ MEP shows MEP-B2-L3-DUC-140 at TF โˆ’18 with Longest Path = Yes, matching the narrative's driver. The two Engineer-owned overdue constraints (RFI-244, submittal S-131) link to notices N-027 and N-028 in the readiness page.

๐Ÿ“– References
  • DCMA 14-Point Schedule Assessment, items 13 and 14
  • GAO, Schedule Assessment Guide, GAO-16-89G, Best Practices 8 and 9
  • PMI, The Standard for Earned Value Management (2019) (check against your copy)
  • AACE International RP 38R-06, Documenting the Schedule Basis
  • FIDIC Conditions of Contract for Construction 1999, Cl 4.21; 2017, Cl 4.20 (check the edition in your contract)
  • Oracle Primavera P6 Professional User Guide โ€” Export to spreadsheet; Reporting; database users (check against your P6 version)

From the field

Experience from working planners. Unreviewed โ€” read it as experience, not guidance.

Add what you know about dashboards, kpis and power bi. What worked, what the consultant pushed back on, what you would do differently next time. A paragraph is plenty.

Contributors get their name and one link on the site โ€” your own templates, course or consultancy. We take nothing and hold nothing.

Add your experience