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.
- 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. - 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).
- Drop the downloaded
.csvfile into xmetric.
| Jira CSV Export Column Name | Data Type | Role in Delivery Analytics |
|---|---|---|
Issue key & Summary | String | Unique ticket key (ENG-1420) and title for outlier drill-down |
Issue Type | String | Separates Story, Bug, Task, and Epic |
Status & Resolution | String | Identifies Done / Resolved tickets vs. Won't Do or Duplicate |
Priority | String | Segments P0/Highest defects from routine backlog work |
Assignee / Component | String | Groups throughput by team, service, or squad |
Created | Timestamp | Ticket creation timestamp |
Resolved | Timestamp | Timestamp when the issue reached a resolved state |
Sprint | String | Sprint name (note: Jira exports multiple columns named Sprint if an issue spilled over across sprints) |
Custom field (Story Points) | Float | Story 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.0xmetric / 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'
END3. 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
- CSV export row limits (1,000 synchronous / 10,000 asynchronous): In Jira Cloud, synchronous filter exports cap at 1,000 issues per batch, while the asynchronous Export CSV feature from the Issue Navigator supports exporting up to 10,000 work items (as of October 2026). If your query exceeds the limit, narrow your JQL date window (for example
resolved >= "2026-07-01" AND resolved <= "2026-09-30") before exporting (combining several CSV exports in the xmetric app is coming). - Lead time vs. active "In Progress" cycle time: Standard Jira issue CSV exports include
CreatedandResolvedtimestamps, but not the exact timestamp when an issue transitioned fromTo DotoIn Progressunless your team populates a custom field via Jira Automation on transition.
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.