计算数据表达式概述
您可以使用数据表达式在Adobe Workfront中定义计算的自定义字段。 计算表达式将生成新字段的语句中的现有Workfront字段连接在一起。
您可以在以下位置使用计算数据表达式:
-
自定义表单上的计算自定义字段
有关在Workfront中的自定义表单中创建计算自定义字段的更多信息,请参阅将计算字段添加到表单。
-
使用文本模式时,报表或列表中的计算自定义列
有关在报表和视图中使用文本模式的详细信息,请参阅文本模式概述。
计算自定义字段与计算自定义列的语法
尽管使用的函数相同,但在计算自定义字段中构建表达式的语法可能与构建计算自定义列的语法不同。
两种语法的区别在于:
例如:
-
在自定义字段中,在任务的自定义表单上,使用以下内容生成附加自定义表单的任务的父级项目的名称:
{project}.{name}
-
在报表的自定义列中,您将使用以下内容在任务报表中添加“项目名称”自定义列:
valuefield=project:name
或
valueexpression={project}.{name}
note tip TIP 相同的语法适用于使用计算表达式的所有文本模式报表元素:视图、筛选器、分组、提示。
有关计算自定义列中必须使用的语法的详细信息,请参阅文本模式概述。
您可以使用的数据表达式
以下列表定义了在Workfront中构建3种不同类型的计算自定义字段之一时可以使用的可用表达式:
您可以使用下面列出的表达式来构建计算的自定义列。 但是,必须对计算自定义列使用正确的语法,如本文中计算自定义字段与计算自定义列的语法一节中所述。
日期和时间计算的自定义字段 date-time-calculated-custom-fields
您可以使用以下表达式创建日期或时间计算自定义字段:
向日期添加天数。 数值可包含部分天数。 例如,1.5会向日期添加一个半天。
表达式的格式如下所示:
ADDDAYS(date, number)
将工作日数添加到日期。 此表达式只将整整数值添加到日期,向下舍入。
表达式的格式如下所示:
ADDWEEKDAYS(date, number)
将月数添加到日期,格式如下:
ADDMONTHS(date, number)
将年数添加到日期中,格式如下:
ADDYEARS(date, number)
清除日期的时间部分,格式如下。 在本例中,日期是工作对象的“输入日期”。
CLEARTIME({entryDate})
将字符串转换为日期,格式如下:
DATE(string)
返回两个日期之间的天数,并会考虑所选时段的开始和结束日期以及这些日期的时间戳。 例如,如果开始日期的开始时间为下午3点,则开始日期不会计为全天。
表达式的格式如下所示:
DATEDIFF(date1, date2)
按数值返回日期的月中日,介于1和31之间。
表达式的格式如下所示。 在本例中,日期是工作对象的“输入日期”。
DAYOFMONTH({entryDate})
按数值返回日期的周内日,在1 (星期日)和7 (星期六)之间。
表达式的格式如下所示。 在本例中,日期是工作对象的“输入日期”。
DAYOFWEEK({entryDate})
按数值返回日期月内的总天数,格式如下。 在本例中,日期是工作对象的“输入日期”。
DAYSINMONTH({entryDate})
返回日期与周末或月末(以先到者为准)之间的总工作日。 在本例中,日期是工作对象的“输入日期”。
表达式的格式如下所示:
DAYSINSPLITWEEK({entryDate})
按数值返回日期年内的总天数,格式如下。 在本例中,日期是工作对象的“输入日期”。
DAYSINYEAR({entryDate})
返回列表中最新的日期,格式如下:
DMAX(date1, date2, ...)
返回列表中最早的日期,格式如下:
DMIN(date1, date2, ...)
以0到23之间的数字返回日期的小时数。
表达式的格式如下所示。 在本例中,日期是工作对象的“输入日期”。
HOUR({entryDate})
以0到60之间的数字返回日期的分钟数,格式如下。 在本例中,日期是工作对象的“输入日期”。
MINUTE({entryDate})
按1到12之间的数字返回日期的月份,格式如下。 在本例中,日期是工作对象的“输入日期”。
MONTH({entryDate})
以0到60之间的数字返回日期的秒数,格式如下。 在本例中,日期是工作对象的“输入日期”。
SECOND({entryDate})
返回两个日期之间的工作日数,同时考虑到所选时段的开始和结束日期以及这些日期的时间戳。 例如,如果开始日期的开始时间为下午3点,则开始日期将不会计为全天。
表达式的格式如下所示:
WEEKDAYDIFF(date2, date1)
根据默认计划返回日期之间的计划分钟数。
表达式的格式如下所示:
WORKMINUTESDIFF(date1, date2)
以4位数字返回日期的年份,格式如下。 在本例中,日期是工作对象的“输入日期”。
YEAR({entryDate})
数学计算的自定义字段 mathematical-calculated-custom-fields
您可以创建使用以下某些数学表达式的计算自定义字段:
返回该数字的绝对值,格式如下。 此示例使用附加自定义表单的对象下的对象数。
ABS({numberOfChildren})
返回数字的平均值,格式如下:
AVERAGE(number1, number2, ...)
将数字四舍五入到最接近的整数,格式如下。 此示例使用附加自定义表单的对象下的对象数。
CEIL({numberOfChildren})
按照提供的顺序除以所有数字,格式如下:
DIV(number1, number2, ...)
将数字下调到最接近的整数,格式如下。 此示例使用附加自定义表单的对象下的对象数。
FLOOR({numberOfChildren})
返回该数字的自然对数值,格式如下:
LN({numberOfChildren})
将数值2的对数值返回至基数1,格式如下:
LOG(number1, number2)
返回列表中的最大项目,格式如下:
MAX(item1, item2, ...)
返回列表中的最小项目,格式如下:
MIN(item1, item2, ...)
将字符串转换为数字,格式如下:
NUMBER(string)
返回提升为次幂的数字,格式如下:
POWER(number, power)
将所有数字相乘,格式如下:
PROD(number1, number2, ....)
注释
将包含小时数的字段相乘时,请确保您了解数据库是将所选字段中的小时数保存为分钟、小时还是秒。 如果小时以分钟或秒保存,但在Workfront界面中以小时显示,则在使用此计算编写表达式时,您可能需要考虑从分钟或秒到小时的转换。
将数字四舍五入到指定的小数位精度,格式如下:
ROUND(number, precision)
对数字进行升序排序,格式如下:
SORTASCNUM(number1,number2, ...)
对数字进行降序排序,格式如下:
SORTDESCNUM(number1, number2, ...)
返回一个数字的平方根,格式如下。 此示例使用附加自定义表单的对象下的对象数。
SQRT({numberOfChildren})
按提供的顺序减去所有数字,格式如下:
SUB(number1, number2, ...)
将所有数字相加,格式如下:
SUM(number1, number2, ...)
文本计算的自定义字段 text-calculated-custom-fields
您可以创建计算自定义字段,该字段使用以下表达式显示文本格式的值:
与其他表达式一起使用,根据索引号从列表中选择值。
索引号是返回数值(通常在已知范围内)的字段或函数。
表达式的格式如下所示:
CASE(indexNumber, value1, value2, ...)
例如,以下表达式在计算列中返回一周中某天的名称,其中1=周日,2=周一,依此类推:
CASE(DAYOFWEEK({entryDate}),"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
最适合用于返回数字的其他表达式,例如DAYOFWEEK、DAYOFMONTH和MONTH。
连接字符串,其格式如下:
CONCAT(string1,"separator", string2)
以下是您可以包括的分隔符示例:
- 空格:“ ”
- 短划线:“ — ”
- 斜杠: "/"
- 逗号:“,”
- 单词:“或”、“和”
如果在withinText字符串中找到findText字符串并且其格式如下所示,则返回真:
CONTAINS(findText, withinText)
去除字符串中的任何特殊字符,使其可被包含在URL参数中。
表达式的格式如下所示:
ENCODEURL(string)
评估指定的条件,如果为true,则返回trueExpression的值;如果为false,则返回falseExpression的值。
表达式的格式如下所示:
IF(condition, trueExpression, falseExpression)
例如,您可以比较两个不同的日期字段,后跟一个True/False结果作为数据字符串:
IF({projectedCompletionDate}>{plannedCompletionDate},"Off Track","On Track")
在日常讲话中,此语句表示:“如果我的对象的预计完成日期大于”同一对象的计划完成日期,则在此字段中显示“偏离轨道”一词;否则,显示“正在轨道”一词。”
如果不希望为true或false表达式添加标签,则必须在语句中插入一个空白标签,例如:
IF({projectedCompletionDate}>{plannedCompletionDate},"","On Track")
或
IF({projectedCompletionDate}>{plannedCompletionDate},"Off Track","")
有关生成“IF”语句的详细信息,请参阅“IF”语句概述。
允许您在可能值的字符串中查找特定值。 如果您要查找的值等于所提供的值之一,则表达式将返回trueExpression;否则,将返回falseExpression。
表达式的格式如下所示:
IFIN(value, value1, value2,..., trueExpression, falseExpression)
例如,您可以查找特定的项目所有者,并在项目视图中使用指定标记标记标记这些项目:
IFIN({owner}.{name},"Jennifer Campbell","Rick Kuvec","Marketing Team","Other Teams")
在日常演讲中,此声明的意思是:“如果项目所有者是Jennifer Campbell或Rick Kuvec,则使用‘营销团队’标记此项目;否则,使用‘其他团队’标记此项目。”
如果不希望为true或false表达式添加标签,则必须在语句中插入一个空白标签,例如:
IFIN({owner}.{name},"Jennifer Campbell","Rick Kuvec","","Other Teams")
或
IFIN({owner}.{name},"Jennifer Campbell","Rick Kuvec","Marketing Team","")
如果值与提供的值之一相等,则返回true;否则,表达式返回false。
表达式的格式如下所示:
IN(value, value1[, value2...])
如果值为null或空,则返回true;否则,表达式返回false。
表达式的格式如下所示:
ISBLANK(value)
从字符串的左侧返回指定数目的字符,格式如下:
LEFT(string, length)
返回字符串的长度,其格式如下:
LEN(string)
返回小写的字符串,其格式如下:
LOWER(string)
在string1中,将所有出现的string2替换为string3。
表达式的格式如下所示:
REPLACE(string1, string2, string3)
从字符串的右侧返回指定数目的字符,格式如下:
RIGHT(string, length)
返回字符串withinText中findText第一次出现的索引,从给定的起始位置开始;如果找不到文本,则返回–1。
表达式的格式如下所示:
SEARCH(findText, withinText, start)
将数字转换为字符串,其格式如下:
STRING(number)
以升序排序一个字符串列表,格式如下:
SORTASCSTRING(string1, string2, ...)
以降序排序一个字符串列表,格式如下:
SORTDESCSTRING(string1, string2, ...)
根据指定的开始索引和结束索引返回字符串的字符,其格式如下:
SUBSTR({string}, number of start position, number of end position)
删除字符串开头和结尾的空格,格式如下:
TRIM(string)
返回大写的字符串,格式如下:
UPPER(string)