跳轉至

公式函式一覽表

函式可以理解為封裝了運算能力的合集,每個函式都有特定的功能。比如 count() 計算個數,sum() 用來求和,string() 用來轉換其他型別為字串型別等等。 具體函式使用案例可參考 。

更新記錄:2026.06 更新

  • 新增函式:GETDAY、TOSTARTOFWEEK、TOENDOFWEEK、TOENDOFMONTH、TOENDOFQUARTER、TOENDOFYEAR、WEEKADD、MONTHADD、MAXOF、MINOF
  • 函式迭代:CONCAT支援多引數拼接;TIMELINE、TIMESERIES支援與動態時間函式巢狀使用

統計函式

函式 語法 示例
AVG AVG(FIELD)
用於對欄位取平均值,僅接受數值型別
節點平均交付天數:
AVG(FILTER(${流程節點},each.${節點狀態} == $option{已完成}).${節點累計進行時間})/86400
AVGIF AVGIF(FIELD, CONDITION)
透過條件判斷來獲取欄位的平均值
測試節點延期天數:
AVGIF(DAYSBETWEEN(${流程節點}.${節點末次結束時間},${流程節點}.${節點排期}.${預計結束日期}),${流程節點}.${節點名稱} == "測試" and ISNULL(${流程節點}.${節點排期}.${預計結束日期}) == false and each > 0)
COUNT COUNT(FIELD)
獲取欄位包含值數量
需求關聯 bug 數:
COUNT($related{缺陷-關聯需求})
COUNTIF COUNTIF(FIELD, CONDITION)
透過條件判斷來獲取欄位包含值數量
優先順序為 P0 的 需求數:
COUNTIF(${工作項id},${優先順序} == $option{P0})
每日新增需求數:
COUNTIF(${工作項id},TOSTARTOFDAY(${提出時間}) == TOSTARTOFDAY(TIMELINECURSOR()))
COUNTDISTINCT COUNTDISTINCT(FIELD)
用於對欄位進行去重計數
需求關聯 bug 的型別數:
COUNTDISTINCT($related{缺陷-關聯需求}.${缺陷型別})
COUNTDISTINCTIF COUNTDISTINCTIF(FIELD, CONDITION)
去重計數(帶條件的)
開發節點數:
COUNTDISTINCTIF(${流程節點}.${節點名稱},MATCH(each,"開發"))
MAX MAX(FIELD)
用於對欄位取最大值,可接受數值型別、時間型別
最大節點估分:
max({流程節點}.{節點估分})
測試節點完成時間:
MAX(FILTER(${流程節點},each.${節點名稱} == "測試").${節點末次結束時間})
MAXIF MAXIF(FIELD, CONDITION)
透過條件判斷來獲取欄位的最大值
開發節點最晚完成時間:
MAXIF(${流程節點}.${節點末次結束時間},MATCH(${流程節點}.${節點名稱},"開發"))
MIN MIN(FIELD)
用於對欄位取最小值,可接受數值型別、時間型別
最小節點估分:
MIN({流程節點}.{節點估分})
MINIF MINIF(FIELD, CONDITION)
透過條件判斷來獲取欄位的最小值
開發節點最早開始時間:
MINIF(${流程節點}.${節點末次開始時間},MATCH(${流程節點}.${節點名稱},"開發"))
MEDIAN MEDIAN(FIELD)
用於對欄位取中位數,可接受數值型別、時間型別
節點估分中位數:
MEDIAN({流程節點}.{節點估分})
MEDIANIF MEDIANIF(FIELD, CONDITION)
透過條件判斷來獲取欄位的中位數
節點估分小於 100 的中位數:
MEDIANIF({流程節點}.{節點估分}, each<100)
SUM SUM(FIELD)
用於對欄位取和,僅接受數值型別
節點總估分:
SUM({流程節點}.{節點估分})
SUMIF SUMIF(FIELD, CONDITION)
透過條件判斷來對欄位求和
開發節點總估分:
SUMIF(${流程節點}.${節點{estimatesVar}},MATCH(${流程節點}.${節點名稱},"開發"))

邏輯函式

函式 語法 示例
NOT NOT(CONDITION)
取非,將 true 與 false 之間互相轉換
優先順序有值,且不等於P1:
NOT({優先順序}!=P1)
EMPTY EMPTY(FIELD)
判斷一個欄位是否為空,空返回 true,非空返回 false
優先順序為空:
EMPTY({優先順序})
ISNULL ISNULL(FIELD)
判斷一個欄位是否為空,空返回 true,非空返回 false
優先順序為空:
ISNULL({優先順序})

時間軸函式

瞭解 TIMELINE 和 TIMESERIES 的使用區別:

函式 語法 示例
TIMELINE TIMELINE(STARTTIME, ENDTIME, "DAY")
輸出時間軸,支援 day、workday、week、bi-week、month、bi-month、quarter 與 year 輸出,不能與其他函式混合使用,以GMT+8計算
支援與動態時間函式巢狀使用。
每天:
TIMELINE(DATE("2025-01-01"),TODAY(),"day")
每月:
TIMELINE(DATE("2025-01-01"),TODAY(),"month")
本月第一天到最後一天:
TIMELINE(TOSTARTOFMONTH(TODAY()),TOENDOFMONTH(TODAY()),"day")
上週第一天到最後一天:
TIMELINE(TOSTARTOFWEEK(WEEKADD(TODAY(),-1)),TOENDOFWEEK(WEEKADD(TODAY(),-1)),"day")
TIMESERIES TIMESERIES(STARTTIME, ENDTIME, "DAY")
輸出獨立的時間序列,支援 day、workday、week、bi-week、month、bi-month、quarter 與 year 輸出,不能與其他函式混合使用,以GMT+8計算,基於當前全量資料統計。生成的時間序列可透過 timelinecursor 函式獲取切片日期,用於對任意時間欄位配置相對時間篩選條件,實現全量資料的動態過濾
支援與動態時間函式巢狀使用。
每天:
TIMESERIES(DATE("2025-01-01"),TODAY(),"day")
每天(過去 7 天):
TIMESERIES(DATEADD(TODAY(),-7),DATEADD(TODAY(),-1),"day")
本月第一天到最後一天:
TIMESERIES(TOSTARTOFMONTH(TODAY()),TOENDOFMONTH(TODAY()),"day")
TIMELINECURSOR TIMELINECURSOR()
取當前 timeline 或 timeseries 時間切片日期,以GMT+8計算
當前日期往前 60 天:
DATEADD(TIMELINECURSOR(),-60)
判斷是否在當前日期提出:
TOSTARTOFDAY(${提出時間}) == TOSTARTOFDAY(TIMELINECURSOR())

條件函式

函式 語法 示例
IF IF(CONDITION, V1, V2)
條件判斷,用於兩個值之間的比較,如 if 的第一個引數為 true,則返回第二個引數的值,否則返回第三個引數的值
條件判斷:
IF({優先順序} == "P0", "高優", "正常")
條件巢狀:
IF(${優先順序} == $option{P0},"高優",IF(${優先順序} == $option{P1},"中優","低優"))

數值類操作運算

函式 語法 示例
SQRT SQRT(NUMBER)
開根號,接受一個數值型別的引數並返回該數值型別的平方根
SQRT(9) ➡️ 3
POW POW(NUMBER1, NUMBER2)
求冪,用於數值的求冪,number1 表示底數,number2 表示冪
POW(2,3) ➡️ 8
ROUND ROUND(NUMBER1, NUMBER2)
保留幾位小數,number1 表示原始數值,number2 表示需保留的小數位數
ROUND(3.1415926 , 2) ➡️ 3.14
CEIL CEIL(NUMBER)
向上取整
CEIL(1.2) ➡️ 2
FLOOR FLOOR(NUMBER)
向下取整
FLOOR(2.1) ➡️ 2

日期函式

函式 語法 示例
TOYEAR TOYEAR(DATE)
提取年
所在年:
TOYEAR(DATE("2021-05-01 18:25:30")) ➡️ 2021
TOMONTH TOMONTH(DATE)
提取月份,將輸入的時間提取月份
所在月:
TOMONTH(DATE("2021-05-01 18:25:30")) ➡️ 5
TOHOUR TOHOUR(DATE)
提取小時,將輸入的時間提取為 24 小時制式小時。
所在小時:
TOHOUR(DATE("2021-05-01 18:25:30")) ➡️ 18
TOMINUTE TOMINUTE(DATE)
提取分鐘,將輸入的時間提取分鐘數
所在分鐘:
TOMINUTE(DATE("2021-05-01 18:25:30")) ➡️ 25
TOSECOND TOSECOND(DATE)
提取秒,將輸入的時間提取秒數
所在秒:
TOSECOND(DATE("2021-05-01 18:25:30")) ➡️ 30
GETYEAR GETYEAR(DATE)
提取日期所在年
GETYEAR(DATE("2021-05-15 18:25:30")) ➡️ 2021
GETMONTH GETMONTH(DATE)
提取日期所在月份
GETMONTH(date("2021-05-15 18:25:30")) ➡️ 5
GETDAY GETDAY(DATE)
提取日期所在日
今天所在日:
GETDAY(date("2021-05-15 18:25:30")) ➡️ 15
GETWEEKOFYEAR GETWEEKOFYEAR(DATE)
提取日期所在周
GETWEEKOFYEAR(DATE("2021-05-15 18:25:30")) ➡️ 19
TOSTARTOFYEAR TOSTARTOFYEAR(DATE)
獲取當前年份的起始時間,向前取整到當前年度的第一天
TOSTARTOFYEAR(DATE("2021-05-15 18:25:30"))
➡️ 2021-01-01 00:00:00
TOSTARTOFQUARTER TOSTARTOFQUARTER(DATE)
獲取當前季度的起始時間,向前取整到當前季度的第一天
當季度第一天開始:
TOSTARTOFQUARTER(DATE("2021-05-15 18:25:30"))
➡️ 2021-04-01 00:00:00
TOSTARTOFMONTH TOSTARTOFMONTH(DATE)
獲取當前月份的起始時間,向前取整到當前月份的第一天
當月第一天開始:
TOSTARTOFMONTH(DATE("2021-05-15 18:25:30"))
➡️ 2021-05-01 00:00:00
TOSTARTOFWEEK TOSTARTOFWEEK(DATE)
獲取日期當前周的週一
TOSTARTOFWEEK(DATE("2026-05-15 18:25:30")) ➡️ 2026-05-11 00:00:00
本週的週一:
TOSTARTOFWEEK(TODAY())
下週的週一:
TOSTARTOFWEEK(WEEKADD(TODAY(),1))
上週的週一:
TOSTARTOFWEEK(WEEKADD(TODAY(),-1))
TOSTARTOFDAY TOSTARTOFDAY(DATE)
獲取當前天的起始時間,向前取整到今天開始
當天開始:
TOSTARTOFDAY(DATE("2021-05-15 18:25:30")) ➡️ 2021-05-15 00:00:00
TOSTARTOFHOUR TOSTARTOFHOUR(DATE)
獲取當前小時的起始時間,向前取整到當前小時開始。
TOSTARTOFHOUR(DATE("2021-05-15 18:25:30"))
➡️ 2021-05-15 18:00:00
TOSTARTOFMINUTE TOSTARTOFMINUTE(DATE)
獲取當前分鐘的起始時間,向前取整到當前分鐘開始。
TOSTARTOFMINUTE(DATE("2021-05-15 18:25:30"))
➡️ 2021-05-15 18:25:00
TOENDOFWEEK TOENDOFWEEK(DATE)
獲取日期當前周的最後一天(週日)
TOENDOFWEEK(DATE("2026-05-15 18:25:30")) ➡️ 2026-05-17 00:00:00
本週最後一天:
TOENDOFWEEK(TODAY())
TOENDOFMONTH TOENDOFMONTH(DATE)
獲取日期當前月的最後一天
TOENDOFMONTH(DATE("2026-05-15 18:25:30")) ➡️ 2026-05-31 00:00:00
本月最後一天:
TOENDOFMONTH(TODAY())
TOENDOFQUARTER TOENDOFQUARTER(DATE)
獲取日期當前季度的最後一天
TOENDOFQUARTER(DATE("2026-05-15 18:25:30")) ➡️ 2026-06-30 00:00:00
本季度最後一天:
TOENDOFQUARTER(TODAY())
TOENDOFYEAR TOENDOFYEAR(DATE)
獲取日期當前年的最後一天
TOENDOFYEAR(DATE("2026-05-15 18:25:30")) ➡️ 2026-12-31 00:00:00
本年最後一天:
TOENDOFYEAR(TODAY())
HOUR HOUR(DATE1, DATE2)
返回兩個日期之間的小時數
HOUR(${提出時間},${完成日期})
SECOND SECOND(DATE1, DATE2)
返回兩個日期之間的秒數
SECOND(DATE("2021-08-09 10:00:30"), DATE("2021-08-09 12:00:30"))
➡️ 7200
DAYSBETWEEN DAYSBETWEEN(DATE1, DATE2)
返回兩個日期之間的天數,值為 date2-date1 的結果
兩個日期之間的自然日天數:
DAYSBETWEEN(${提出時間},${完成日期})
WORKDAYSBETWEEN WORKDAYSBETWEEN(DATE1, DATE2)
返回兩個日期之間的工作日天數,值為 date2-date1 的結果
兩個節點間隔工作日天數:
WORKDAYSBETWEEN(MAX(FILTER(${流程節點},each.${節點名稱} == "評審").${節點末次結束時間}),MAX(FILTER(${流程節點},each.${節點名稱} == "測試").${節點末次結束時間}))
NOW NOW()
返回當前時間
NOW()
TODAY TODAY()
返回當前時間
TODAY()
DATEADD DATEADD(DATE, NUMBER)
計算日期增減計算後的返回值
60 天前:
DATEADD(TODAY(),-60)
WEEKADD WEEKADD(DATE, NUMBER)
計算日期按周偏移後的返回值
上週:
WEEKADD(TODAY(),-1)
下 2 周:
WEEKADD(TODAY(),2)
MONTHADD MONTHADD(DATE, NUMBER)
計算日期按月偏移後的返回值;若目標月不存在該日,則返回目標月最後一天。
上個月:
MONTHADD(TODAY(),-1)
上個月的第一天:
TOSTARTOFMONTH(MONTHADD(TODAY(),-1))

字串函式

函式 語法 示例
LENGTH LENGTH(STRING)
返回字串的長度
LENGTH("meego") ➡️ 5
MATCH MATCH(STRING1,STRING2)
判斷第一個引數是否包含第二個引數,是返回 true,反之返回 false
MATCH("meego", "go") ➡️ true
LOWER LOWER(STRING)
將字串中的英文字元轉換為小寫。
LOWER("MEEGO") ➡️ "meego"
UPPER UPPER(STRING)
將字串中的英文字元轉換為大寫。
UPPER("meego") ➡️ "MEEGO"
REVERSE REVERSE(STRING)
反轉字串。
REVERSE("meego") ➡️ "ogeem"
SUBSTRING SUBSTRING(STRING,START,LENGTH)
以字元為單位擷取指定位置字串
SUBSTRING("meego", 1, 3) ➡️ "mee"
CONCAT CONCAT(STRING,STRING,...)
將引數中的多個欄位/字串拼接。
支援多引數拼接,可一次傳入 2 個以上引數。
CONCAT("mee", "go") ➡️ "meego"
一次拼接 4 個字串:
CONCAT("a", "b", "c", "d") ➡️ "abcd"
MAXOF MAXOF(VALUE, VALUE, ...)
在同一個工作項例項內對多個欄位或多個值進行最大值對比。
取兩個日期中的較大者:
MAXOF(DATE("2026-05-20 00:00:00"),DATE("2026-05-10 05:00:00"))
業務場景:比較“承諾完成時間”和“實際上線時間”,取更晚時間作為最終風險日期。
MINOF MINOF(VALUE, VALUE, ...)
在同一個工作項例項內對多個欄位或多個值進行最小值對比。
取兩個日期中的較小者:
MINOF(DATE("2026-05-20 00:00:00"),DATE("2026-05-10 05:00:00"))
業務場景:比較“計劃開始時間”和“實際開始時間”,取更早時間做提前量分析。

型別轉換函式

函式 語法 示例
STRING STRING(FIELD)
將一個值強行轉為 string 型別
STRING(1)
DATE DATE(STRING)
將日期型別的字串轉換成日期型別
DATE("2025-08-02")
BOOL BOOL(FIELD)
將某值轉換成 bool 型別
BOOL(1)

容器操作函式

函式 語法 示例
CONTAINS CONTAINS(ARRAY, ELEM)
判斷陣列是否包含某一個元素,是返回 true,反之返回 false
CONTAINS([1, 2, 3], 1) == true
CONTAINSANY CONTAINSANY(ARRAY1, ARRAY2)
判斷兩個陣列是否有交集,是返回 true,反之返回 false
CONTAINSANY([1, 2, 3], [2, 3, 4]) == true
FILTER FILTER(ARRAY, CONDITION)
過濾陣列元素
已完成節點:
FILTER(${流程節點},each.${節點狀態} == $option{已完成})
JOIN JOIN(ARRAY, CHAR)
拼接字串陣列
JOIN(["1", "2"], ",") == 1,2

複合欄位專用函式

函式 語法 示例
BYROW BYROW(COMPOSITE FIELD, FIELD)
按組展開指定複合欄位,獲取到各組子欄位的欄位值
團隊複合規劃中,獲取各組規劃工作量之和:
SUM(BYROW(團隊複合規劃, each.規劃工作量))
BYROWIF BYROWIF(COMPOSITE FIELD, FIELD, CONDITION)
按組展開指定複合欄位,透過條件判斷獲取各組值,若條件判斷為 true,則返回欄位值,否則返回 null
團隊複合規劃中,前端團隊的規劃工作量之和:
SUM(BYROWIF(團隊複合規劃, each.規劃工作量, each.團隊==前端))
IFANYOF IFANYOF(COMPOSITE FIELD,CONDITION)
按組展開指定複合欄位,若至少存在一組條件判斷結果為 true,則返回 true,否則返回 false
團隊迭代規劃中,至少存在一組規劃工作量小於實際工作量:
IFANYOF(團隊複合規劃, each.規劃工作量<each.實際工作量)==true
IFALLOF IFALLOF(COMPOSITE FIELD,CONDITION)
按組展開指定複合欄位,若每一組條件判斷結果均為 true,則返回 true,否則返回 false
判斷是否所有團隊複合規劃中,規劃工作量小於實際工作量
IFALLOF(團隊複合規劃, each.規劃工作量<each.實際工作量)==true