Jira查询语句优化及执行报错排查咨询
JQL报错排查与优化方案
一、报错原因分析
原查询存在核心问题导致执行失败:
aggregateExpression用法错误:该函数仅用于在查询结果中添加聚合计算列,不能作为过滤条件通过AND连接在筛选逻辑里,这是触发报错的主要原因。- 条件冗余重复:
linkedIssuesOf("type = Epic", "is epic of")已经筛选出所有属于Epic的子issue,再叠加"Epic Link" is not EMPTY属于重复判断,完全可以移除。
二、优化后的查询方案
根据需求(统计Epic下不同状态的Story数量,且Story需包含组件),分两种场景给出最优写法:
场景1:查询Epic并显示下属Story的聚合统计
如果目标是查看每个Epic的Story状态分布,直接针对Epic编写查询,通过aggregateExpression添加统计列:
issueType = Epic AND issueFunction in aggregateExpression("Total Stories", "count(linkedIssues('is epic of', 'issuetype = Story AND component is not EMPTY'))") AND issueFunction in aggregateExpression("Done Stories", "count(linkedIssues('is epic of', 'issuetype = Story AND component is not EMPTY AND statusCategory = Done'))") AND issueFunction in aggregateExpression("In Progress Stories", "count(linkedIssues('is epic of', 'issuetype = Story AND component is not EMPTY AND statusCategory = 'In Progress'))") AND issueFunction in aggregateExpression("To Do Stories", "count(linkedIssues('is epic of', 'issuetype = Story AND component is not EMPTY AND statusCategory = 'To Do'))") ORDER BY key
场景2:查询符合条件的Story,后续通过统计面板分组
如果目标是先筛选出有组件、属于Epic的Story,再手动统计各Epic的状态分布,直接写基础过滤逻辑即可,效率更高:
issuetype = Story AND component is not EMPTY AND "Epic Link" is not EMPTY ORDER BY "Epic Link"
执行后在Jira筛选器结果页,通过分组依据选择Epic Link,再添加状态类别统计,就能直观看到每个Epic下的Story状态数量。
三、额外注意事项
- 需确保已安装ScriptRunner for Jira插件:
linkedIssuesOf、aggregateExpression均为该插件提供的扩展函数,未安装会直接报错。 - 状态类别名称需匹配:若Jira自定义过状态类别名称,需替换为实际名称,避免因名称或引号不匹配导致的问题。
内容的提问来源于stack exchange,提问作者EMMANUEL CHRISTOPHER
相关产品推荐
相关产品推荐

