Compare metrics across sprints

This is the documentation for Dataplane Reports 3.3. - 4.0.x.
If you are using an earlier version of the app, you can access the documentation from the version index page.

Compare metrics across sprints

Overview

For development teams, tracking key metrics across sprints is imperative to fine-tuning the agile process. While Jira provides many useful reports to monitor the progress of current sprints, it provides limited insight into the performance and metrics of past team efforts. 

With Dataplane Reports, you can efficiently run several different reports to compare time logged, story points, issue types, and counts, or any number of additional metrics across sprints.

When running a report utilizing Jira's Sprint field, or when viewing a single Jira issue, you'll notice that the Sprint field returns a list of all sprints that the issue has ever been added to, not just the sprint in which work on the issue was actually completed and the issue resolved. This confusion is furthered by language in the Agile panel when viewing a Jira issue, stating the list of Completed Sprints in which an issue was assigned. By Completed Sprints, Jira Software means only that the sprints themselves were completed.

Agile sprints report

 

In this Solutions Guide article, you'll learn how to easily compare metrics across sprints using Dataplane Reports, and by using Dataplane Reports and the Jira Misc Custom Fields (JMCF) or ScriptRunner for Jira app, how to associate each issue with only the one sprint in which the issue's work was completed and the issue resolved.

For details on using Jira Misc Custom Fields (JMCF) with Dataplane Reports, see Reporting on Calculated Values with JMCF. Review Writing scripts in JMCF using the Groovy language for additional information on JMCF app and script use.

For details on using ScriptRunner for Jira with Dataplane Reports, see the Report on calculated values with ScriptRunner. For additional information, review the ScriptRunner Scripted Fields documentation.

Configuring your Jira instance

Creating Dataplane reports using Jira's Sprint field directly can result in distorted metrics if issues were in multiple sprints. To get around this, let's create a custom scripted field to report on only the most recent sprint that each issue is associated with.

  1. In Jira, install the Jira Misc Custom Fields (JMCF) or ScriptRunner for Jira app.

  2. Create a new JMCF custom field of type Calculated (scripted) Text/Html Field, or a ScriptRunner custom field of type Scripted Field. Name the field Sprint Latest or something similar. Select Free Text Searcher for the Search Template option for this field, since the field will be returning text values.

  3. For a JMCF custom field, use the following script:

    ArrayList sprintList = (ArrayList)issue.get("Sprint") int numSprints = (sprintList != null) ? sprintList.size() : 0 return (numSprints > 0) ? sprintList.get(numSprints - 1).getName() : ""

    For a ScriptRunner custom field, use the following script:

    ArrayList sprintList = (ArrayList)getCustomFieldValue("Sprint") int numSprints = (sprintList != null) ? sprintList.size() : 0 return (numSprints > 0) ? sprintList.get(numSprints - 1).getName() : ""

    The ScriptRunner static type checker may display a red x on the last line of the above script. This warning can be safely ignored. As described in the ScriptRunner documentation, Groovy is a dynamically-typed language, and the ScriptRunner static type checker has limitations when a dynamic script is analyzed.

     

  4. Reindex Jira. This is necessary whenever adding a new custom field in Jira.

  5. Once Jira is reindexed, click Dataplane Reports > Administration > Configuration. On the Indexer tab, click the Sync Index button to have Dataplane register the newly added custom field.

We are now ready to create a Dataplane report.

Time spent per sprint

Let's create a report showing the time spent across multiple sprints.

Creating the report

In the Dataplane report directory, under New Report, select the Advanced category of reports.

Select the Sum numeric field report.

For report configuration options, set up your report as follows:

Option

Selection

Comments

Option

Selection

Comments

Search

any

Select your Jira projects, project categories, and filters of interest. Or click the JQL tab in that field to enter a command using Jira Query Language (JQL).

Statuses to include

include Resolved" and Closed.

Select which Jira issue statuses you want to include in the report. Select Resolved and Closed to report on just those issues that have been completed.

Value Of

Time Spent (Hours)

We want the time that was spent on the issues in the sprint.

Alternatively, you could select Original Time Estimate (Hours) to report on the total time it would take to complete all the work.

Segment By

Sprint Latest

Select the newly added JMCF or ScriptRunner custom field.

Chart Type

Bar chart

or

bar chart

Select the Bar Chart or Vertical Bar Chart.


Click the Run Report button to create your report.  

You will see a nice overview of the time logged in each sprint.

Time spent bar chart

To adjust the number of individual sprints shown, change the Max Categories option as shown here:

Options panel

Sorting results by sprint order

For the type of report in this example, Dataplane orders the results by magnitude rather than sequentially by sprint (date) order.

To sort the results instead by sprint order, use a Dataplane Customizer Script and specify the want ordering using the category and order keywords.

If you're not yet familiar with using Customizer Scripts in your reports, read through Customize reports with scripts for some background and then return here to get started.

In this example, we set the order explicitly for each planned and expected sprint: 

customizeChart { int sprintNo = 1 category "Sprint 5" order sprintNo++ category "Sprint 6" order sprintNo++ category "Sprint 7" order sprintNo++ category "Sprint 8" order sprintNo++ category "Sprint 9" order sprintNo++ category "Sprint 10" order sprintNo++   category "Star Fruit" order sprintNo++ category "Durian" order sprintNo++ category "Bosch Pear Sprint" order sprintNo++   category "Sprint 11" order sprintNo++   // keep going for expected future sprints category "Sprint 12" order sprintNo++ category "Sprint 13" order sprintNo++ category "Sprint 14" order sprintNo++ // etc... }

 

With the above Customizer Script, the sprints are now custom ordered on the domain axis:

Time spent bar chart

 

Dataplane Customizer Scripts are based on the Groovy scripting language, which gives you lots of flexibility to customize your reports programmatically. 

For example, if you name your sprints using a specific date pattern—such as "Sprint 2016-01-04" and "Sprint 2016-01-18" for bi-weekly sprints—use a "for" loop to programmatically define the sprint order:  

customizeChart { int START_DAY = 4 // start day = 4th (Monday, Jan 4th) int START_MONTH = 0 // start month = Jan int START_YEAR = 2016 int TOTAL_SPRINTS = 26 int SPRINT_DURATION_DAYS = 14 def startDate = new GregorianCalendar(START_YEAR, START_MONTH, START_DAY) for (int sprintNo = 1; sprintNo <= TOTAL_SPRINTS; sprintNo++) { def sprintName = "Sprint " + String.format("%4d-%02d-%02d", startDate.get(Calendar.YEAR), startDate.get(Calendar.MONTH), startDate.get(Calendar.DAY_OF_MONTH))   // set the order on the domain axis for the sprint (data series) with this name category sprintName order sprintNo // increment to start date of the next sprint startDate.add(Calendar.DAY_OF_MONTH, SPRINT_DURATION_DAYS) } }

Segmenting results

The Segment by field in Dataplane reports lets you break down report results by any number of different Jira fields or properties to see more granularity.

Add Issue type to the Segment By field to see the time spent on each issue type across each sprint. 

Click Run report again, and the results will look something like this:

Time spent bar chart segmented

Now let's segment the results further. Add both Issue type and priority to the Segment By option.

Click Run report again, and the results will look something like this:

Time spent bar chart segmented by issue type and priority

Simplifying comparison across sprints

Among the various Chart Type options in a report configuration, the Normalized Bar Chart and Normalized Vertical Bar Chart are great tools for comparing where time was spent across multiple sprints.

Chart type

These chart types visualize the report results on a percentage basis instead of using absolute units of time, allowing for easy sprint-to-sprint comparisons.

Here we ran the same report using a Normalized Vertical Bar Chart:

Simplifying comparison across sprints

Sprint issues by type

In this example, we'll create a new report to show the count of sprint issues by type.

Creating the report

In the Dataplane report directory, under New report, select the Advanced category of reports.

Select the Current issue values report.

For report configuration options, set up your report as follows:

Option

Selection

Comments

Option

Selection

Comments

Search

any

Select your Jira projects, project categories, and filters of interest. Or click the JQL tab in that field to enter a command using Jira Query Language (JQL).

Value Of

Sprint Latest

Select the newly added JMCF or ScriptRunner custom field.

Segment By

Issue Type

Select Issue Type to group the results by this issue property.

Chart Type

Select the Multiple Pie Chart.


Click the Run report button to see a nice overview of the various sprints, segmented by issue type.

If you move your cursor over one of the pie sections, you'll see the number of issues in that individual segment of the report results.

Pie chart reports







Need support? Create a request with our support team.

Copyright © 2005 - 2026 Appfire | All rights reserved.