Plain-language questions
Ask for on-time project delivery per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Projects and time
On-time project delivery is the percentage of completed projects delivered on or before their planned end date. You divide the number of projects delivered on time by the total number of projects completed in a period. It says something about how reliable your planning and your commitments to clients are.
Projects completed on or before the planned end date ÷ all completed projects × 100%
Acme Groothandel completed 40 installation projects in 2025. Of these, 34 were delivered on or before the planned date. On-time project delivery is 34 ÷ 40 × 100% = 85.0%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A higher percentage means clients can rely on the agreed date more often. Also look at how many days late the other projects were: one day or one month makes a big difference. Compare by project type and project manager, and look for recurring causes in late projects, such as material lead times or overly tight schedules.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
SELECT date_trunc('quarter', actual_end)::date AS quarter,
COUNT(*) AS completed_projects,
COUNT(*) FILTER (WHERE actual_end <= planned_end) AS on_time,
ROUND(100.0 * COUNT(*) FILTER (WHERE actual_end <= planned_end) / NULLIF(COUNT(*), 0), 1) AS on_time_pct,
ROUND(AVG(actual_end - planned_end) FILTER (WHERE actual_end > planned_end), 1) AS avg_days_late
FROM projects
WHERE actual_end IS NOT NULL
GROUP BY 1
ORDER BY 1;Completed Projects = CALCULATE ( COUNTROWS ( Projects ), NOT ISBLANK ( Projects[ActualEnd] ) )
On-time Projects % = DIVIDE ( COUNTROWS ( FILTER ( Projects, NOT ISBLANK ( Projects[ActualEnd] ) && Projects[ActualEnd] <= Projects[PlannedEnd] ) ), [Completed Projects] )In ENABLE
Ask for on-time project delivery per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
Count the projects completed in the period and how many of them finished on or before the planned end date. Divide the second number by the first and multiply by 100%. Record whether you measure against the original or the latest agreed date.
Both are useful, but they answer different questions. The original date tells you about your planning, the revised date about your reliability after a change. Keep both and state which one you show.
Common causes are optimistic schedules, growing scope, waiting for materials or for the client, and too little capacity. Record the main cause for every late project. After a few months you will see which cause comes up most often.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.