在 Explore 中,您可以编写公式,以支持自定义指标和属性。为确保公式工作正常,请进行正确构建。如果公式未正确构建,公式编辑器会在您编写或编辑时实时显示错误消息。错误消息可识别问题,并指导如何解决问题。
本文章介绍了如何修复报告中配置错误的公式,列出了您在公式编辑器中可能遇到的错误消息,并提供了修正公式的建议,包括不正确和正确公式的示例。
本文章包含以下主题:
相关文章:
修复配置错误的公式
如果计算指标或属性包含配置错误的公式,则系统不会返回结果。通过检查以下位置来识别配置错误的公式:
- 报告库:使用配置错误公式的报告显示在报告库中“需要更新”类别中。
- 面板库:使用受影响报告的面板显示在面板库的“需要更新”标签中。
- 报告生成器:使用错误配置公式的报告底部会显示一条警告消息。
- 公式编辑器:对于受影响的公式,公式编辑器中会显示一条警告消息。
要修复配置错误的公式,请打开使用该公式的报告,并在公式编辑器中进行修复。然后,重新发布使用了该报告的面板。
更新配置错误的公式
- 在 Explore 中,单击报告图标 () 以打开报告库。
- 单击需要更新标签。
- 单击其中一个列出的报告以打开。
- 对于每个计算指标或属性:
- 单击指标或属性,然后单击铅笔图标。
- 检查公式以确定是否存在任何配置错误。公式中配置错误的部分带有下划线。错误消息会告诉您需要纠正的内容。
- (可选)在进行任何更改之前,创建指标或属性的副本。这样可以避免现有报告在解决问题过程中受到影响。
- 修复错误消息中指定的公式问题。有关特定错误消息的更多指导,请参阅以下部分。
修复一个报告中的计算指标或属性的公式会同时修复任何其他报告中使用的该公式。
- (可选)如果您已创建指标或属性的副本,请更新原始指标或属性。
- 保存报告。
重新发布受影响的面板
- 单击面板图标 () 以打开面板库。
- 单击需要更新标签。
- 将鼠标悬停在其中一个面板上,然后单击编辑。
- 在面板中,单击分享旁边的下拉箭头,然后选择发布。用户下次查看分享的面板时会看到最新版本。
- 单击发布。
公式编辑器中的错误消息类型
最常见的公式错误
以下视频介绍了如何解决一些常见的警告消息。
有关特定错误消息的更多指导,请参阅下文。
一般语法错误消息
如果您看到以下错误消息,则表示公式中的某些语法不正确:
- “公式存在问题。请检查您的计算语法并重试。”
下表列出了此类错误的常见原因。
原因 | 不正确的公式 | 正确的公式 |
---|---|---|
双括号不完整,或括号多余。 | IF ([Ticket status] = "Solved")) THEN [Ticket ID] ENDIF | IF ([Ticket status] = "Solved") THEN [Ticket ID] ENDIF |
双引号不完整。 | [Ticket status] = "Solved | [Ticket status] = "Solved" |
属性未括在括号中。 | Ticket status = "Solved” | [Ticket status] = "Solved” |
您未在指标前添加聚合器。 |
First reply time (min) |
SUM(First reply time (min)) |
IF 语句中缺少重要部分。本例中为 ENDIF 缺失。 |
IF ([Ticket status] = "Solved") THEN [Ticket ID] |
IF ([Ticket status] = "Solved") THEN [Ticket ID] ENDIF |
数据类型错误消息
等于、不等于、小于或大于表达式
错误消息示例 | 不正确的公式 | 正确的公式 |
---|---|---|
不可将 [Project stage] 用作文本,将 1 用作数字。请使用相同类型。 | [Project stage]=1 |
[Project stage]="1" 等式表达式两端应使用相同的数据类型。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。Project stage 是文本属性,因此值应当加双引号。 |
不可将 [Ticket country] 用作文本,将 [User country code] 用作数字。请使用相同类型。 | [Ticket country]!=[User country code] |
[Ticket country]!=[User country name] 不等式表达式两端应使用相同的数据类型。Ticket country 是文本,因此右端的属性也应该是文本。 |
不可将 [Ticket assigned - Date] 用作文本,将 26 用作数字。只能使用数字或文本。 | [Ticket assigned - Date] >= 26 |
[Ticket assigned - Date] >= "2023-01-26" 大于或等于表达式得两端应使用相同的数据类型。本例中是一个用双引号引起来的日期。 |
不可将 VALUE(Agent replies) 用作数字,将 2 用作文本。只能使用数字或文本。 | VALUE(Agent replies)<”2” |
VALUE(Agent replies)<2 小于表达式的两端应使用相同的数据类型。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。Agent replies 是一个指标,该值为数字,所以不应使用双引号。 |
算术运算和文本值联接
错误消息示例 | 不正确的公式 | 正确的公式 |
---|---|---|
不可将 [Ticket group] 用作文本,将 [Ticket ID] 用作数字。只能使用数字或文本。如有必要,使用 STRING 函数将数字转为文本,或使用 NUMBER 函数将文本转为数字。 | [Ticket group]+[Ticket ID] |
[Ticket group]+STRING([Ticket ID]) 此公式用于联接文本,如 Explore 配方:联接属性中所示。因此,需要使用 STRING 函数将数字属性转换为文本。 |
不可将 VALUE(Full resolution time (min)) 用作数字,将 [Additional task time] 用作文本。只能使用数字或文本。如有必要,使用 STRING 函数将数字转为文本,或使用 NUMBER 函数将文本转为数字。 | VALUE(Full resolution time (min))+[Additional task time] |
VALUE(Full resolution time (min))+NUMBER([Additional task time]) 此公式的目标是求两个值的和。Full resolution time (min) 是数字,但 Additional task time 是内部列出数字的文本字段。最好的方法是在 Support 中创建新的数字自定义字段,用于对额外任务时间进行记录,这样无需任何转换即可随时在 Explore 中使用。也可以使用 NUMBER 函数将文本属性转换为数字。 |
不可将 VALUE(First reply time (min)) 用作数字,将“60”用作文本。只能使用数字。 | VALUE(First reply time (min))/"60" |
VALUE(First reply time (min))/60 算术运算(例如除法)需要数值。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。此处不应使用双引号。 |
不可将 COUNT(Comments) 用作数字,将 [Comment public] 用作文本。只能使用数字。 | COUNT(Comments)-[Comment public] |
COUNT(Comments)-COUNT(Public comments) 算术运算(例如减法)需要数值。Comment public 是一个文本属性。需要使用一个指标。 |
函数
错误消息示例 | 不正确的公式 | 正确的公式 |
---|---|---|
不可在 THEN 语句中使用不同的类型。1 是数字,"0" 是文本。请使用相同类型。 | IF [Ticket status]="Open" THEN 1 ELSE "0" ENDIF |
IF [Ticket status] = "Open" THEN 1 ELSE 0 ENDIF 或 IF [Ticket status] = "Open" THEN "1" ELSE "0" ENDIF THEN 和 ELSE 关键字后使用的值应为相同类型。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。如上所示,有两种方法可以修复此错误。 |
不可同时将 1 和 2 用作数字。只能使用布尔值。 | IF 1 OR 2 THEN [Ticket ID] ENDIF |
IF VALUE(Agent replies) = 1 OR VALUE(Agent replies) = 2 THEN [Ticket ID] ENDIF IF 语句内的条件集应为 TRUE 或 FALSE。正确的语法是:IF TRUE OR FALSE THEN [Ticket ID] ENDIF 请添加一些条件。但是,公式编辑器不会验证条件本身的有效性。 |
此函数中不可使用数字。使用文本。 | NUMBER([Ticket ID]) |
NUMBER([Ticket external ID]) NUMBER 函数用于将带有数值的文本属性转换为文本。Ticket ID 属性是数字字段,因此不可用于此函数,但 Ticket external ID 等文本属性可用于此函数。 |
此函数中不可使用文本或布尔值。请使用文本或数字。 |
LINK("https://subdomain.zendesk.com/ agent/organizations/" + STRING([Ticket organization ID]), [Organization check box]) |
LINK(” 或 LINK(” LINK 函数的第二个参数需要使用文本,不能使用布尔属性。如上所示,您有两个选项。您可以使用文本属性,或通过 STRING 函数将布尔属性转换为文本。 |
此处不可将 [Ticket created - month] 用作文本。使用时间戳类型。 | DATE_LAST([Ticket created - Month]) |
DATE_LAST([Ticket created - Timestamp]) DATE_LAST 函数需要一个时间戳属性。 |
不可使用其他条件类型。使用文本类型。 |
SWITCH ([Ticket group]) {CASE "Support":"1" CASE 3:"2" } |
SWITCH ([Ticket group]) {CASE "Support":"1" CASE 3:"2" } Ticket group 是文本属性,因此所有个案的条件都应是文本类型。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。因此,3 需要加上双引号。 |
不可在 SWITCH 语句中使用不同的类型。"1" 是文本,2 是数字。请使用相同类型。 | SWITCH ([Ticket group]) {CASE "Support":"1" CASE "IT":2 } |
SWITCH ([Ticket group]) {CASE "Support":"1" CASE "IT":"2" } 所有个案的结果应为同一类型。用双引号引起来的值将被视为文本,不带双引号的数字将被视为数字。因此需要将 2 加上双引号。 |
不可在数组中使用不同的类型。请使用相同类型。 | IN([Leg instance], ARRAY(1, "2", "3")) |
IN([Leg instance], ARRAY(1, 2, 3)) 如果是文本属性,请对所有值使用双引号;如果是数字属性,则不要对所有值使用双引号。Leg instance 是数字属性,因此公式不应使用双引号。 |
指标聚合器错误消息
错误消息示例 | 不正确的公式 | 正确的公式 |
---|---|---|
无法使用 SUM(database metric) 聚合器。使用 VALUE 聚合器、ATTRIBUTE_FIX 或 ATTRIBUTE_ADD 函数。 | IF SUM(Requester wait time (min))>120 THEN "Long wait time" ELSE "Short wait time" ENDIF |
IF VALUE(Requester wait time (min))>120 THEN "Long wait time" ELSE "Short wait time" ENDIF 此错误消息出现在计算属性中,而不是指标中。这种情况下需要使用 VALUE 聚合器。 |
计算属性中不可以使用 COUNT(Solved tickets)。将指标封装到 ATTRIBUTE_FIX 或 ATTRIBUTE_ADD 函数中。 | IF COUNT(Solved tickets)>1 THEN "Solved" ELSE "Unsolved" ENDIF |
IF ([Ticket status - Unsorted] = "Solved" OR [Ticket status - Unsorted] = "Closed") "Solved" ELSE "Unsolved" ENDIF 此错误消息出现在计算属性中,而不是指标中。修复此错误的最佳方法是使用与已解决工单指标相同的条件。该指标的公式为:IF ([Ticket status - Unsorted] = "Solved" OR [Ticket status - Unsorted] = "Closed") THEN [Ticket ID] ENDIF 您可以如上所示更新公式。 |
计算属性中不可以使用 COUNT(Ticket assignments to Dev)。将指标封装到 ATTRIBUTE_FIX 或 ATTRIBUTE_ADD 函数中。 | IF COUNT(Ticket assignments to Dev)>1 THEN "Solved" ELSE "Unsolved" ENDIF |
IF ATTRIBUTE_FIX(COUNT(Ticket assignments to Dev), [Update ticket ID])>1 THEN "Multiple escalations" ELSE "One or no escalations" ENDIF 此错误消息出现在计算属性中,而不是指标中。如果原始公式更复杂,无法重复使用,请尝试使用 ATTRIBUTE_FIX 函数来指定应聚合此属性的级别。这种情况下应在更新工单 ID 级别进行计算。 |
“Time in status”已包含聚合器。用 SUM 替换 AVG,或确保“Time in status”仅包含 VALUE 聚合器。 | AVG(Time in status) |
SUM(Time in status) “Time in status”是一个嵌套指标。其公式已包含聚合器。例如,这可能是 MED(First reply time (hrs))。不允许在中值的基础上计算平均值,因此顶级聚合器必须设置为 SUM,或者需要将较低级别的聚合器更改为 VALUE。 |
其他错误消息
错误消息示例 | 不正确的公式 | 正确的公式 |
---|---|---|
此数据集中不存在 [Ticket statuses]。检查是否有拼写错误。 | [Ticket statuses] ="Solved" |
[Ticket status] ="Solved" 出现此错误的常见原因有:
在本例中,属性名称存在拼写错误。 |
[Calculated group] 的公式配置错误。修复后请保存。 | IF [Calculated group] = "light" THEN TRUE ELSE FALSE ENDIF | Calculated group 的公式存在配置错误。因此,您需要先解决这个问题。 |
这里的计算引用了自身 COUNT(Sales tickets)。将其移除或替换。 | COUNT(Sales tickets)/COUNT(Tickets) | 您是在将一个公式添加到其自身内部。本例中编辑的公式是 Sales tickets,用户正尝试将 Sales tickets 添加到公式内部。 |
一个计算中最多可以有 3 个级别。请移除这里的嵌套计算:SUM((2nd reply time) | MED(2nd reply time) / MED(First reply time (min) | 2nd reply time 计算指标基于另一个计算,而该计算本身又基于另一个计算。此类计算称为嵌套计算。最多允许 3 层嵌套。 |
此处不可使用 [Ticket Group]。INCLUDES_ALL 只能用于标签属性。 | INCLUDES_ALL([Ticket Group], "Support", "Sales") |
INCLUDES 函数只能用于标签属性。其它属性请使用 IN 函数。 |