EnableYourData.com

KPI · Projects and time

Issue age: formula and example.

Issue age is the number of days that tasks, bugs or requests have been open since they were created. You look at the average, the median and the number of issues above a threshold, such as 90 days. It shows whether a backlog is being maintained or slowly filling up with work nobody gets to.

Issue age formula

Today − creation date, per open issue; then the average, median or share above a threshold

Worked example

Acme Groothandel's IT team has 60 open issues, 1,800 days old in total. The average issue age is 1,800 ÷ 60 = 30 days. Nine issues have been open for more than 90 days: 9 ÷ 60 × 100% = 15%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

Rising issue age means more work comes in than gets finished, or old issues are being left behind. Issues that are months old are often no longer relevant; clean them up or plan them deliberately. Look separately at bugs and customer requests, because waiting costs the most there.

Pitfalls with issue age

  • Leaving cancelled or duplicate issues open, which makes the backlog look older than it is.
  • Showing only the average when a few very old issues drive the picture.
  • Mixing different kinds of work, such as ideas and bugs, in one age figure.

SQL & DAX

Calculating issue age in SQL and 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.

SQL · PostgreSQL
SELECT COUNT(*) AS open_issues,
       ROUND(AVG(CURRENT_DATE - created_at::date), 1) AS avg_age_days,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY CURRENT_DATE - created_at::date) AS median_age_days,
       COUNT(*) FILTER (WHERE created_at < CURRENT_DATE - interval '90 days') AS older_than_90_days,
       ROUND(100.0 * COUNT(*) FILTER (WHERE created_at < CURRENT_DATE - interval '90 days') / NULLIF(COUNT(*), 0), 1) AS older_than_90_pct
FROM tasks
WHERE completed_at IS NULL;
DAX · Power BI
Open Issues = CALCULATE ( COUNTROWS ( Tasks ), ISBLANK ( Tasks[CompletedAt] ) )
Avg Issue Age (days) = DIVIDE ( SUMX ( FILTER ( Tasks, ISBLANK ( Tasks[CompletedAt] ) ), DATEDIFF ( Tasks[CreatedAt], TODAY (), DAY ) ), [Open Issues] )

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for issue age 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.

Read more →

In your Power BI dashboard

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.

Read more →

Custom dashboards (pilot)

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.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you measure issue age?

For each open issue, calculate the number of days since it was created. Take the average and the median, and count how many issues are older than a fixed threshold. Track these weekly to see the trend.

What is the difference between issue age and cycle time?

Issue age is about work that is still open; cycle time is about work that is finished. That makes issue age an early warning: a task that has been running for a long time will become a long cycle time later. Look at them together.

What should you do with old issues in the backlog?

Review them periodically: schedule them, merge them with other work or close them if they are no longer relevant. A smaller, current backlog is more useful than a long list nobody reads. Agree after how many days an issue gets reviewed again.

Use AI on your own data. Securely, and without the headache.

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.