Issue Filter Formula

Variables

A variable is one number. It is produced by running one query and aggregating one field - or just counting the results.

Variables list

Configuring a Variable

Configuring a Variable dialog

SettingWhat It Does
Add variableAdds the next letter, up to i. Remove one with its trash icon. Only a exists by default
LabelA human-readable name shown in the config UI, so a is not just a letter
Data sourceProjects, Board, Saved Filter, Custom JQL, or Dynamic Filter Controller
AggregationHow the matching issues are reduced to one number
FieldWhich field to aggregate - not needed for Count

Aggregations

Aggregation options

AggregationReturnsTypical Use
Count of work items (default)Number of matching issuesCounts, rates, ratios
Sum of a fieldTotal of a numeric fieldTotal story points, total time spent
Average of a fieldMean of a numeric fieldAverage estimate, average story size
Minimum of a fieldSmallest valueEarliest or lowest bound
Maximum of a fieldLargest valueWorst case, most recent

Time Fields

For time-tracking aggregations, three sub-values are available: Time spent, Remaining estimate, and Original estimate. Values are read in seconds, so divide in the formula to display hours or days - for example a / 3600 for hours.

Naming Variables

Give every variable a label. Six months later, a / b * 100 is unreadable but "Production bugs / All bugs x 100" is obvious - and the labels are what your successor will rely on.

Practical Notes

  • Add only the variables you use. Each variable is a separate query, so nine variables means nine queries on every refresh
  • A variable whose query matches nothing returns 0 for Count and Sum, and NaN for Average, Minimum, and Maximum - so a formula using it returns NaN
  • Variables scoped to the Dynamic Filter Controller re-resolve when the shared filter bar changes, so one formula can respond to dashboard-wide filtering