xmetric / Use cases

Analyze Jira Issue Cycle Time and Sprint Throughput from a CSV Export

To analyze Jira issue cycle time, sprint throughput, and bug escape rates without buying paid Jira marketplace plugins, export your Jira issue search to CSV and open it in xmetric. The file stays in your browser, and in the free xmetric app (/app/) calculated fields on Created, Resolved, Sprint and Story Points plot 50th and 85th percentile delivery times.

Chart your own CSV

Chart your export here

Drop a CSV here. xmetric reads every row in this browser and draws a first chart you can regroup or change the measure of. Nothing is uploaded.

No file loaded yet. You can also drop a CSV on this box.

How to export Jira issues to CSV for cycle time analysis

Jira Software's built-in Control Chart can be noisy when issues move across multiple boards or custom statuses. Exporting an issue filter to CSV gives you a clean row per issue that you can slice by project, component, assignee, or sprint.

  1. In Jira Cloud, go to Filters > View all work items (or Filters > View all issues) and run a JQL filter such as project = ENG AND resolved >= -180d.
  2. Click Export in the top right and select Export Excel CSV (my defaults) / Export CSV (current fields) or Export Excel CSV (all fields) / Export CSV (all fields).
  3. Drop the downloaded .csv file into xmetric.
Jira CSV Export Column NameData TypeRole in Delivery Analytics
Issue key & SummaryStringUnique ticket key (ENG-1420) and title for outlier drill-down
Issue TypeStringSeparates Story, Bug, Task, and Epic
Status & ResolutionStringIdentifies Done / Resolved tickets vs. Won't Do or Duplicate
PriorityStringSegments P0/Highest defects from routine backlog work
Assignee / ComponentStringGroups throughput by team, service, or squad
CreatedTimestampTicket creation timestamp
ResolvedTimestampTimestamp when the issue reached a resolved state
SprintStringSprint name (note: Jira exports multiple columns named Sprint if an issue spilled over across sprints)
Custom field (Story Points)FloatStory point estimate on the issue

Three engineering delivery formulas and SQL equivalents

1. 50th and 85th Percentile Lead Time (Avoiding Average Distortion)

Engineering delivery times follow a long-tail distribution: a single ticket that sat in the backlog for 90 days skews the mean. Kanban and DORA teams track the 50th percentile (median) and 85th percentile (SLE) resolution time instead.

xmetric / Tableau formula ([Lead Time Days]):

DATEDIFF('hour', [Created], [Resolved]) / 24.0

xmetric / Tableau formula ([P85 Lead Time by Issue Type]):

{ FIXED [Issue Type] : PERCENTILE([Lead Time Days], 0.85) }

SQL equivalent:

SELECT
   DATE_TRUNC('week', "Resolved") AS resolved_week,
  "Issue Type" AS issue_type,
  COUNT(*) AS completed_issues,
  SUM(COALESCE("Custom field (Story Points)", 0)) AS story_points_completed,
  ROUND(QUANTILE_CONT(DATEDIFF('hour', "Created", "Resolved") / 24.0, 0.50), 1) AS p50_days,
  ROUND(QUANTILE_CONT(DATEDIFF('hour', "Created", "Resolved") / 24.0, 0.85), 1) AS p85_days
FROM jira_issues
WHERE "Resolved" IS NOT NULL
  AND COALESCE("Resolution", 'Done') NOT IN ('Duplicate', 'Won''t Do', 'Cannot Reproduce')
  AND "Issue Type" IN ('Story', 'Bug', 'Task')
GROUP BY 1, 2
ORDER BY 1 DESC, 2;

2. Sprint Spillover Detection (Repeated Sprint Columns)

When an issue rolls over from Sprint 14 to Sprint 15, Jira's CSV export creates two or more columns named Sprint (Sprint, Sprint_1, Sprint_2). Checking whether secondary sprint columns are non-null measures your exact sprint carryover rate.

xmetric / Tableau formula ([Spilled Over Flag]):

IF NOT ISNULL([Sprint_1]) AND [Sprint_1] != ''
THEN 'Carried Over (2+ Sprints)'
ELSE 'Completed in First Sprint'
END

3. Bug vs. Feature Throughput Share (FIXED LOD)

Track what percentage of weekly completed tickets (or story points) goes to fixing Bug issues versus shipping Story and Task items.

xmetric / Tableau formula:

SUM(IF [Issue Type] = 'Bug' THEN 1 ELSE 0 END)
/
MIN({ FIXED DATETRUNC('week', [Resolved]) : COUNTD([Issue key]) })

Limits of Jira CSV exports vs. Jira API / plugins

Questions people ask

How do I exclude "Won't Do" and "Duplicate" tickets from skewing lead time?

Add Resolution to the Filters shelf in the xmetric app (or filter in your query) and exclude Duplicate, Won't Do, and Cannot Reproduce so instant rejections do not artificially lower your P50 delivery time.

Why are Story Points exported under `Custom field (Story Points)` or `Custom field (Story point estimate)`?

Team-managed Jira projects use Custom field (Story point estimate), whereas company-managed projects use Custom field (Story Points). In xmetric, combine both with COALESCE([Custom field (Story Points)], [Custom field (Story point estimate)]).

Does xmetric upload our internal Jira ticket summaries to a server?

No. Files you drop are read in your browser, and your engineering roadmap and ticket titles are not uploaded unless you sign in and save a workbook online.

Drop your Jira export.csv above for a first chart, then chart P50/P85 delivery time, sprint carryover rate and bug throughput ratio in the xmetric app.