You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 08:30:16