How to

Use Functions

Your select, having, group_by, and sort_by sections have access to a wide range of functions as well as to the full breadth of Python syntax. If the built-in functions aren’t enough, you can also just write your own and either register them at runtime or make them persistently available via a setuptools entrypoint.

See Query Functions for a complete list of built-in functions.

Format data using functions

select:
  Status: status
  Summary: summary
  Story Points: "{Story Points}"
  Spring Count: len(customfield_10010)
  Sprint Name: sprint_name(customfield_10010[-1])
from: issues

In the above example, two of the displayed columns are processed with a function:

  • Sprint Count: Will render the number of array elements in the field containing the list of sprints in which this issue was present.

  • Sprint Name: Will show the name of the last sprint associated with the displayed issue.

Filter results using functions

select:
  Status: status
  Summary: summary
  Story Points: "{Story Points}"
from: issues
having:
  # The quoting below is required only because the first character of line
  # being a double-quote causes YAML parsers to parse the line differently
  - '"Sprint #19" in sprint_name(customfield_10010[-1])'

In the above example, the issues returned from Jira will be compared against each constraint you’ve entered in the having section; in this case, all returned issues not having the string “Sprint #19” in the name of the last sprint associated with the displayed issue will not be written to your output.

Note

having entries are processed locally instead of on the Jira server so filtering using having entries is slower than using standard Jql due to the amount of (potentially) unnecessary data transfer involved. It is recommended that you use having only when your logic cannot be expressed in standard Jql (i.e. in the where section).

Group results & calculate aggregates

You can group and/or aggregate your returned rows by using group_by:

select:
  Status: status
  Count: count(key)
from: issues
group_by:
  - status

You’ll receive just a single result row for each status, and a count of how many records shared that status in the second column.

Sort results using functions

You can order your entries using any expression, too:

select:
  Status: status
  Count: count(key)
from: issues
group_by:
  - status
sort_by:
  - count(key) desc

This will sort all returned tickets, grouped by status, in descending order from the status that has the most tickets to the one that has the fewest.

Note

The sort_by section is evaluated locally instead of by your Jira server. In situations where your expression can be evaluated in Jql, you will have faster performance using the order_by section.

Limit the number of returned results

You can limit the number of results returned by adding a limit to your query:

select:
  Key: key
  Status: status
  Summary: summary
from: issues
where:
  - assignee = "me@adamcoddington.net"
limit: 10

Be aware that this limit is handled by Jira; so only the first N records will be available for downstream steps in the Query Lifecycle.

Expand Jira Issue Fields

You can ask Jira to expand issue fields by adding an expand element to your query:

select:
  Key: key
  Status: status
  Summary: summary
from: issues
expand:
  - transitions

The meaning of these expansions is defined by Jira; you can find more information in Jira’s documentation.