飞书项目的度量计算字段使用指南 - 飞书官网
产品功能

飞书项目的度量计算字段使用指南

飞书

2024-12-23

功能上新​
为什么要用计算字段?​
如何创建计算字段?​
一个计算字段是如何构成的?​
了解度量的字段​
了解几个常见的函数​
@语法​
获取人员​
计算关联工作项​
FAQ​
​
​
✍️
了解更多度量使用案例:度量计算公式 2.0 案例合集 ​
​
功能上新 ​
度量计算字段编辑器全新升级!优化计算字段编写界面,提升公式编写体验。 ​
​
功能点 ​
新版 ​
旧版 ​
调整布局与样式,支持编辑器全屏放大 ​
​
250px|700px|reset
​
​
​
250px|700px|reset
​
​
​
​
250px|700px|reset
​
​
​
公式输入支持原地搜索 ​
  • 在公式输入区输入字段、函数名称时,在联动下方资源库进行结果查找的基础上,可原地唤起搜索结果下拉列表 ​
  • 通过@可唤起选择器(选项/人员/团队/日期/关联工作项),且支持输入搜索 ​
​
250px|700px|reset
​
​
​
250px|700px|reset
​
​
​
不支持 ​
关联工作项可搜索,提升可读性 ​
​
250px|700px|reset
​
​
​
​
​
250px|700px|reset
​
​
​
支持站外文本公式复制 ​
公式:SUM(FILTER(${流程节点},each.${节点状态} == $option{已完成}).${节点估分}) ​
复制后: ​
​
250px|700px|reset
​
​
具体复制规则请参考复制公式 ​
不支持 ​
支持公式格式美化 ​
一键对公式结构进行换行和缩进 ​
​
250px|700px|reset
​
​
​
不支持 ​
支持快捷键 ​
上键、下键、左键、右键:移动光标 ​
回车键:确认选择/换行 ​
TAB 键:公式缩进 ​
Ctrl+Z:取消上一步操作 ​
不支持 ​
​
为什么要用计算字段? ​
​
📌
度量场景复杂多变,系统预置的度量字段不满足使用时,可通过计算公式自定义维度与指标。 ​
​
例如:需要统计未完成的需求数量,可以通过计算公式来判断需求的状态并进行计数统计。 ​
​
250px|700px|reset
image.png
​
​
如何创建计算字段? ​
添加计算字段​
指标/维度区域点击[添加新计算字段]即可创建计算字段,计算字段编辑框分为公式编辑区、字段与函数选择区、字段与函数示例区和输出结果设置区。 ​
  • 公式编辑区:可以使用常见的 formula 公式进行编辑,类似「字段一 + 字段二」,从字段与函数选择区选择字段与函数; ​
  • 字段与函数选择区:可以在本区域内选择所需的字段与函数输入到公式编辑区; ​
  • 字段与函数示例区:在本区域内可以了解字段与函数的介绍与使用示例,方便快速上手使用; ​
  • 输出结果设置区:可在本区域查看计算结果类型、设置数字精度。​
​
250px|700px|reset
image.png
​
​
全屏 ​
支持点击【全屏】放大公式编辑区,点击【退出全屏】即可恢复至编辑框初始状态。 ​
​
250px|700px|reset
​
​
格式美化 ​
支持一键美化格式,自动对公式结构进行换行和缩进,公式编写更具可读性和逻辑性。 ​
​
250px|700px|reset
​
​
复制公式 ​
支持站外公式复制,即按格式要求带有前缀信息的公式,可从文档、聊天框等位置,复制到【度量-计算字段编辑区】并自动匹配相关字段。 ​
  • 使用范围:如仅在计算字段编辑器内编写公式,无需书写前缀。如需要将公式从编辑器复制到文档,系统会自动匹配相关前缀。如需要从文档将公式复制到计算字段编辑器,公式需带有相关前缀才能最大化的复制并匹配成功。 ​
  • 复制格式要求:为了更好的对公式进行匹配,不同的信息需要匹配不同的前缀符号,例如字段【优先级】前需增加$,最终效果为${优先级}。​
​
前缀规则 ​
字段示例 ​
复制公式示例 ​
字段增加前缀$ ​
${优先级} ​
COUNTIF(${工作项id},${优先级}==$option{P0}) ​
选项增加前缀$option ​
$option{P0} ​
​
人员增加前缀$user ​
$user{梦瑶} ​
SUM(FILTER(${流程节点},each.${节点人员}==$user{梦瑶}).${节点估分}) ​
团队增加前缀$team ​
$team{PM} ​
SUM(FILTER(${流程节点}.${节点人员},CONTAINS(each.${所属团队},$team{运营团队})).${估分插值}) ​
关联工作项增加前缀$related ​
$related{需求-关联缺陷} ​
COUNT(($related{需求-关联缺陷}) ​
​
一个计算字段是如何构成的? ​
​
📌
计算公式由字段、运算符与函数构成。 ​
  • 字段:飞书项目数据范围中的度量字段,例如流程节点.节点名称、名称、排期、人员等。 ​
  • 运算符:用于对数据进行运算。例如:*、 -、 +、 / 、%、&&、|| 等。 ​
  • 函数:函数可以理解为封装了运算能力的合集,每个函数都有特定的功能。比如 count() 计算个数,sum() 用来求和,string() 用来转换其他类型为字符串类型等等。 ​
​
​
250px|700px|reset
​
​
​
了解度量的字段​
📌字段是计算公式中计算的数据。在计算字段的编辑器中,支持查看可在计算公式中运算的字段。​
计算公式编辑器中的字段包含以下三种类型: ​
  1. 系统默认提供的度量字段,如:节点估分、状态进入次数、人员角色等; ​
  1. 当前图表数据范围中的工作项字段 ​
  1. 当前图表中的聚合字段​
飞书项目提供了可视化展开子字段能力,并支持直接在计算字段公式中使用子字段。例如流程节点下的节点名称、节点估分、节点排期等子字段。​
点击字段,可查看字段的名称、字段类型、所属空间、所属工作项等相关信息,以及支持查看选择类型字段的所有选项。​
​
250px|700px|reset
image.png
​
​
了解几个常见的函数 ​
​
🍭
接下来我们将了解几个常见的函数,学习如何撰写计算公式。 ​
​
​
if() ​
​
📌
语法 ​
  • if(condition, v1, v2) ​
  • condition:条件表达式 ​
  • v1, v2:任意类型 ​
  • return:condition 为真时的返回 v1,condition 为假时返回 v2 ​
​
根据提供的条件参数,条件计算结果为 TRUE 时,返回一个值;条件计算结果为 FALSE 时,返回另一个值 ​
​
例如:统计“大需求”与“小需求”的数量。当需求总估分大于 50 时,需求级别为“大需求”;当需求总估分小于等于 50 时,需求级别为“小需求”。 ​
  • 维度:需求级别 ​
​
if({全部节点总估分}>50,"大需求","小需求") //公式解析:当需求全部节点总估分>50时,则返回“大需求”;若当需求全部节点总估分<=50时,则返回“小需求” ​
IF(${全部节点总估分}>50,"大需求","小需求") //可复制本公式至公式编辑区 ​
​
​
  • 指标:需求数量 ​
​
count({工作项ID}) ​
​
​
​
250px|700px|reset
​
​
​
count() ​
​
📌
语法 ​
  • count(field) ​
  • field:任意类型 ​
  • return:数值类型 ​
​
获取字段包含值数量 ​
​
​
例如:统计每个业务线的需求数量。 ​
  • 维度:业务线 ​
  • 指标:需求数量 ​
​
count({工作项ID}) // 公式解析:计算需求数量​
COUNT(${工作项id}) // 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
countIf() ​
​
📌
语法 ​
  • countIf(field,condition) ​
  • field:任意类型 ​
  • condition:条件表达式 ​
  • return:数值类型 ​
​
通过条件判断获取字段包含指定值的数量 ​
​
​
例如:统计每个业务线优先级为 P0 的需求数量。 ​
  • 维度:业务线 ​
  • 指标:优先级为 P0 的需求数量 ​
​
countif({工作项ID},{优先级}==@P0) // 公式解析:计算优先级==P0 的需求数量​
COUNTIF(${工作项id},${优先级}==$option{P0}) // 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
sum() ​
​
📌
语法 ​
  • sum(field) ​
  • field:数值类型 ​
  • return:数值类型 ​
​
用于对字段取和,仅接受数值类型 ​
​
​
例如:统计每个业务线投入的人力总和 ​
  • 维度:业务线 ​
  • 指标:投入的人力总和 ​
​
sum({流程节点}.{节点估分}) // 公式解析:对节点估分求和​
SUM(${流程节点}.${节点估分}) // 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
sumIf() ​
​
📌
语法 ​
  • sumIf(field, condition) ​
  • field:数值类型 ​
  • condition:条件表达式 ​
  • return:数值类型 ​
​
通过条件判断来对满足条件的字段求和,field 仅接受数值类型 ​
​
​
例如:统计每个业务线优先级为 P0 需求的人力总和 ​
  • 维度:业务线 ​
  • 指标:优先级为 P0 需求的人力总和 ​
​
sumif({流程节点}.{节点估分},{优先级}==@P0) // 公式解析:对优先级==P0 的需求的节点估分求和​
SUMIF(${流程节点}.${节点估分},${优先级}==$option{P0}) // 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
点语法 ​
​
📌
点语法 ​
  • P1.P2 ​
  • P1: 对象数组/对象 ​
  • P2: 对象数组/对象中的某一个属性,也就是子字段 ​
  • return:获取 P1 中的 P2 对象 ​
​
用于取出对象属性,包括数组对象。所以可使用语法:P1.P2.P3... ​
​
​
例如: ​
​
{流程节点}.{节点估分} //获取流程节点中的节点估分属性性性
​
​
​
250px|700px|reset
​
​
除了通过点语法外,在计算公式的编辑器展开子字段,选中子字段即可。 ​
​
250px|700px|reset
​
​
​
filter() ​
​
📌
语法 ​
  • filter(P1,P2) ​
  • P1:对象数组 ​
  • P2:条件表达式,对源范围的条件过滤。 ​
  • return:对源范围中按条件过滤后,形成一个对象数组 ​
​
在条件表达式中,可使用 each 关键字 ​
例如:filter({流程节点},each.{节点名称} =="Android开发") ​
等价:filter({流程节点},{流程节点}.{节点名称} =="Android开发") ​
​
用于对源范围条件过滤后,生成一个新的对象数组。 ​
​
​
例如: ​
​
filter({流程节点},each.{节点名称}=="Android开发"||each.{节点名称}=="iOS开发") //过滤出节点名称为"Android开发"或"iOS开发"的流程节点点点
​
​
过滤后的对象数组,可以通过点语法,获取对象数组中属性进行运算。例如: ​
​
sum(filter({流程节点},each.{节点名称}=="Android开发"||each.{节点名称}=="iOS开发").{节点估分}) //公式解析:过滤出"Android开发"节点与"iOS开发"节点后,再用{流程节点}.{节点估分}获取节点估分求和,即可求相关开发节点的估分总和​
SUM(FILTER(${流程节点},each.${节点名称}== "Android开发"||each.${节点名称}=="iOS开发").${节点估分})// 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
timeline() ​
​
📌
语法 ​
  • timeline(startTime,endTime, "day") ​
  • startTime:开始时间 ​
  • endTime:结束时间 ​
  • "day":日期维度, day、workday、week、bi-week、month、bi-month、quarter 与 year 输出 ​
​
输出时间轴,不能与其他函数混合使用。 ​
​
​
例如: ​
​
timeline(date("2024-01-01"),now(),"day") //公式解析:输出 2024-01-01 到今天的时间,并以天为维度展示时间轴轴轴
​
​
250px|700px|reset
​
​
@ 语法 ​
​
📌
在计算公式的编辑器中,可以使用 @ 语法唤起输入窗,快捷输入数据。 ​
​
​
获取人员 ​
​
📌
在计算公式的编辑器中,可通过 @ 语法,获取成员。 ​
​
例如:查看某个成员在不同优先级需求中投入的人力 ​
  • 维度:优先级 ​
  • 指标:某个成员的人力总和 ​
​
sum(filter({流程节点},each.{节点人员}==@梦瑶 ).{节点估分}) //公式解析:通过@语法可输入人员,获取节点人员是“梦瑶”的节点估分求和​
SUM(FILTER(${流程节点},each.${节点人员}==$user{梦瑶}).${节点估分}) // 可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
计算关联工作项 ​
​
📌
在计算的编辑器中,可通过@语法,获取关联工作项的数据。 ​
​
​
​
250px|700px|reset
​
​
例如:查看每个需求下关联缺陷的数量 ​
  • 维度:名称 ​
  • 指标:关联缺陷的数量 ​
​
count({需求-关联缺陷}) //公式解析:通过@语法可输入关联工作项 ,获取关联缺陷的数据并计算数量量量
​
​
​
250px|700px|reset
​
​
​
例如:查看每个需求下关联缺陷中未解决的数量 ​
  • 维度:名称 ​
  • 指标:关联缺陷中未解决的数量 ​
​
count(filter({需求-关联缺陷},each.{状态}!="CLOSED")) //公式解析:通过@语法可输入关联工作项 ,获取关联缺陷的中状态不等于CLOSED的缺陷并计算数量​
COUNT(FILTER($related{需求-关联缺陷},each.${状态}!=$option{CLOSED})) //可复制本公式至公式编辑区区区
​
​
​
250px|700px|reset
​
​
​
FAQ ​
count 与 countIf 的区别是什么? ​
count:计算个数 ​
​
count({工作项ID}) // 计算需求数量量量
​
​
countIf:计算满足条件的个数 ​
​
countif({工作项ID},{优先级}==@P0) // 计算优先级==P0 的需求数量量量
​
​
count 与 countDistinct 的区别是什么? ​
count:计算个数 ​
​
count({工作项ID}) // 计算需求数量量量
​
​
countDistinct:对数据去重后计算个数 ​
​
countDistinct({工作项ID}) // 对需求去重后计算数量量量
​
​
sum 与 sumIf 的区别是什么? ​
sum:计算求和 ​
​
sum({流程节点}.{节点估分}) // 对节点估分求和和和
​
​
sumIf:对满足条件的数据计算求和 ​
​
sumIf({流程节点}.{节点估分},{优先级}==@P0) // 对优先级==P0 的需求的节点估分求和和和
​
​
什么场景下需要使用 filter() ? ​
​
📌
字段类型为“对象数组”,或字段类型为“对象数组”的子字段,可使用 filter() 进行过滤。 ​
例如:流程节点、角色人员、节点排期等等。 ​
​
​
如何查看度量字段的数据类型 ​
​
❗
函数的参数会限制参数的字段数据类型。例如 sum(field) 中 field 需要是数值类型。 ​
​
​
当我们撰写公式时,可以在计算字段的编辑器中,找到对应度量字段查看字段类型。例如:名称的字段类型为“字符串”。 ​
​
250px|700px|reset
​
​
​
如何查看子字段的数据类型 ​
​
📌
对于一些场景获取子字段进行度量,例如流程节点中的“节点负责人”、“节点排期”、“节点估分”等子字段。 ​
飞书项目度量支持点击展开至子级,直接选择使用相关字段进行计算。 ​
​
​
例如:流程节点展开后,可选择节点排期、节点子任务、节点人员、节点名称等度量字段。选择节点排期后,可继续展开至子级,选择周期时长、预计开始日期、预计结束日期等度量字段。 ​
​
250px|700px|reset
​
​
下钻的子级字段,也可在计算字段的编辑器中查看字段类型。 ​
​
250px|700px|reset
​
​
​
函数嵌套时,如何查看子函数返回结果的数据类型? ​
​
💫
对于复杂的场景,计算字段通常需要使用多个函数嵌套,那么其中一个函数的计算结果,会作为一个函数的参数的进行计算。 ​
我们如何查看其中一个函数的计算结果的数据类型? ​
​
​
可以将函数粘贴到计算公式编辑器中,在计算结果类型中查看: ​
​
250px|700px|reset
​
​
​
​
​
预约飞书企业效能顾问 深度诊断企业痛点,定制专属 AI 办公方案

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题

字节跳动旗下 AI 工作平台

联系我们立即试用