跳到主要内容
版本:7.33

SQL 使用说明

效能管理提供了内置的 SQL 能力,支持用户在现成的指标之外自行制作更多指标。使用位置在卡片编辑页中⬇️

SQL 使用说明

使用流程分为 3 个步骤:

  1. 获取字段
  2. 写计算公式
  3. 应用

1.获取字段​

Performance 中的数据源来源有 2 种:自动同步的项目管理中的工作项属性,预处理过的属性相关的数据。

可以从下图中红圈位置处查看⬇️,每个数据集均有说明。

SQL 使用说明

其中亦提供了用于写计算公式的sql表达式,点击图中按钮即可直接复制使用⬇️

SQL 使用说明

所有数据集的预处理内容说明⬇️​

1.工作项​

维度计算方式说明
完成时间工作项状态类型最后一次切换为「已完成」的时间
是否逾期状态类型为已完成的工作项,完成时间晚于截止日期,则为“是”,否则为“否”“是”或“否”
故事点完成量工作项状态类型非「已完成」时,值为0;状态类型为「已完成」时,该值等于「故事点」
生存时长工作项完成时间 - 工作项创建时间
响应时长工作项「进行中」状态类型最早出现时间 - 工作项创建时间
指标计算方式说明
工作项按时交付数量「是否逾期」为“否”的工作项数量
工作项按时交付率「是否逾期」为“否”的工作项数量 / 状态类型为已完成的工作项数量
内部发现的缺陷数「是否为线上缺陷」= 否的工作项数量有使用「是否为线上缺陷」属性的工作项才会被计算
外部发现的缺陷数「是否为线上缺陷」= 是的工作项数量有使用「是否为线上缺陷」属性的工作项才会被计算
缺陷探测率内部发现的缺陷数占全部缺陷比重。内部发现的缺陷数量 / [(内部发现的缺陷数量 +外部发现的缺陷数量)] * 100%使用该指标时,需要增加筛选条件:工作项类型 == 有使用「是否为线上缺陷」字段的工作项类型
缺陷逃逸率外部发现的缺陷数占全部缺陷比重。外部发现的缺陷数量 / [(内部发现的缺陷数量 +外部发现的缺陷数量)] * 100%使用该指标时,需要增加筛选条件:工作项类型 == 有使用「是否为线上缺陷」字段的工作项类型
工作项完成进度状态类型为「已完成」的工作项数量占全部工作项数量的比重「全部工作项数量」取决于筛选范围
线上缺陷密度线上缺陷个数 / 需求个数

2.项目​

维度计算方式说明
是否归档“是”或“否”
延期率[(当前日期 - 计划结束日期)/(计划结束日期 - 计划开始日期)] * 100%只在计算进行中的项目时有意义;需要在筛选条件中限制状态类型为进行中的项目

3.迭代​

维度计算方式说明
迭代实际完成日期迭代阶段类型最后一次切换为「已完成」的日期
是否按时交付「迭代实际完成日期」早于等于「计划完成日期」则为“是”,否则则为“否”“是”或“否”
指标计算方式说明
按时交付数量「是否按时交付」为“是”的迭代数量
按时交付率迭代按时交付数量 / 迭代阶段类型为已完成的迭代数量

4.工时​

维度计算方式说明
工时登记或预估工时的时长
工时类型“登记”或“预估”
成员添加登记或预估工时时选择的成员
开始时间工时的开始时间(不是创建时间)
指标计算方式说明
总登记工时登记工时的总和根据筛选范围计算。如按项目、迭代、成员,按每天、每周、每月筛选
总预估工时预估工时的总和根据筛选范围计算。如按项目、迭代、成员,按每天、每周、每月筛选
预估偏差率(总登记工时 - 总预估工时)/ 总预估工时 * 100%根据筛选范围计算
日饱和度用户每日登记工时 / 团队标准工作时长 * 100%使用折线图查看时,「时间单位」需设置成“天”
周饱和度每日饱和度按周求和 / 每周工作日 * 100%使用折线图查看时,「时间单位」需设置成“周”

2.写计算公式​

首先了解常用函数:​

符号意义
+加
-减
*乘
/除
AVG取平均值
MAX取最大值
MIN取最小值
COUNT计数
COUNTIF有条件的计数
SUM求和
DISTINCT去重
DATE_DIFF计算时间差
>大于
<小于
>=大于等于
<=小于等于
=等于
!=不等于
IN包含在某范围内
NOT IN不包含在某范围内
LIKE"%内容%"包含某内容
IS NULL为空
IS NOT NULL不为空

全量可用函数参见 clickhouse函数教程

具体使用方法示例​

当你已选择「工作项」数据集:

计数——此时在sql输入框中输入:count(*),你会得到:工作项总数。

有条件的计数——输入:countIf(状态类型sql表达式='未开始'),你会得到:状态类型为“未开始”的工作项总数。

有多个条件的计数——输入:countIf(状态类型sql表达式='未开始' or 状态类型='进行中'),你会得到:状态类型为“未开始”或“进行中”的工作项总数。

求和——输入:sum(成本sql表达式),你会得到:总成本。

求比率:countIf(状态类型sql表达式='未开始')/count(*),你会得到:状态类型为“未开始”的工作项数占总数的比,简称未开始率。

求时间差:date_diff('day',startdate,enddate),你会得到:开始日期与结束日期相差的天数。

求平均值:avg(表达式),比如对时间差求平均,可以代入上一行表达式:avg(date_diff('day',startdate,enddate))

以上函数可以灵活组合使用,按需选择即可。

特殊值处理说明​

自定义的状态值可以直接写中文,例如:状态表达式 = ‘审批进行中'。
对于系统状态值的写法,以未开始为例,应写:状态表达式 =‘{{status.todo}}'。所有需要特殊处理的系统状态值如下:
'status.todo': '未开始',
'status.inactive': '未激活',
'status.reopen': '重新打开',
'status.unpublished': '未发布',
'status.to_be_processed': '待处理',
'status.pending': '待办',
'status.fixed': '已修复',
'status.in_progress': '进行中',
'status.resolving': '处理中',

'status.in_implementation': '实现中',
'status.implemented': '已实现',
'status.done': '已完成',
'status.published': '已发布',
'status.rejected': '已拒绝',
'status.form_closed': '已关单',
'status.solved': '已解决',
'status.confirmed': '已确认',
"status.verified": '已验证',
'status.checked': '完成',
'status.close': '关闭',

另外,自定义的工作项类型可以直接写中文,例如:工作项类型表达式 = ‘合同'。

对于系统自带工作项类型的写法,以任务为例,应写:工作项类型表达式 =‘{{issue_type.task}}'。所有需要特殊处理的类型如下:

'issue_type.needs': '需求',

'issue_type.defect': '缺陷',

'issue_type.android_defect': 'Android缺陷',

'issue_type.web_defect': 'Web缺陷',

'issue_type.task': '任务',

'issue_type.work_order': '工单',

'issue_type.user_story': '用户故事',

'issue_type.sub_task': '子任务',

'issue_type.sub_needs': '子需求',

'issue_type.sub_check_item': '子检查项',

'issue_type.release': '发布',

3.应用​

点击右下角按钮即可应用到图表⬇️

SQL 使用说明

确认输出结果后,可以使用样式设置中的内容调整图表外观,以增加美观度

,如下图

。

SQL 使用说明