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.
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.
In Jira, install the Jira Misc Custom Fields (JMCF) or ScriptRunner for Jira app.
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.
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.
Reindex Jira. This is necessary whenever adding a new custom field in Jira.
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 |
|---|---|---|
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 | or | 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.
To adjust the number of individual sprints shown, change the Max Categories option as shown here:
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:
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:
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:
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.
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:
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 |
|---|---|---|
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.
