在 Explore 中,您可以编写公式,以支持自定义指标和属性。请务必正确构建公式,以确保其有效。如果公式不正确,公式编辑器会实时显示错误消息。错误消息可用于识别问题,并提供解决问题指导。

本文章介绍了如何修复报告中配置错误的公式,不仅列举了公式编辑器中的各种错误消息,还提供了修复公式错误的建议,包括正确和不正确公式的示例。

注意:从 2024 年 8 月 13 日起,含有错误配置公式的报告将无法像以前一样正常工作,而会显示一条错误消息。

本文章包含以下主题:

  • 修复配置错误的公式
  • 公式编辑器中的错误消息类型

相关文章:

  • 公式编写资源
  • Explore 函数参考

修复配置错误的公式

如果计算指标或属性包含配置错误的公式,则系统不会返回结果。可检查以下位置来识别配置错误的公式:

  • 报告库:使用配置错误公式的报告显示在报告库中“需要更新”类别中。
  • 面板库:使用受影响报告的面板显示在面板库的“需要更新”标签中。
  • 报告生成器:使用错误配置公式的报告底部会显示一条警告消息。
  • 公式编辑器:对于受影响的公式,公式编辑器中会显示一条警告消息。

要修复配置错误的公式,请打开使用该公式的报告,然后在公式编辑器中进行更正,然后重新发布所有使用该报告的面板。

注意:如果配置错误的公式嵌套在非基于公式的计算(例如日期范围指标或组或集属性)中,则非基于公式的计算中不会显示错误消息。要在公式编辑器中查看错误消息,请打开原始嵌套计算。
提示:请报告创建者自行修复公式。报告库中的“创建者”列会显示每个报告的创建用户。(如果您没有看到“创建者”列,请单击列图标 (),然后选择创建者,以添加该列。)

更新配置错误的公式

  1. 在 Explore 中,单击报告图标 () 以打开报告库。
  2. 单击需要更新标签。

  3. 单击其中一个列出的报告以打开。
  4. 对于每个计算指标或属性:
    • 单击指标或属性,然后单击铅笔图标。
    • 检查公式以确定是否存在任何配置错误。公式中配置错误的部分带有下划线。错误消息会告诉您需要纠正的内容。

    • (可选)在进行任何更改之前,创建指标或属性的副本。这样可以避免在故障排除期间影响现有报告。
    • 修复错误消息中指定的公式问题。有关特定错误消息的更多指导,请参阅以下部分。

      修复一个报告中的计算指标或属性的公式会同时修复任何其他报告中使用的该公式。

    • (可选)如果您已创建指标或属性的副本,请更新原始指标或属性。
  5. 保存报告。

重新发布受影响的面板

  1. 单击面板图标 () 以打开面板库。
  2. 单击需要更新标签。
  3. 将鼠标悬停在其中一个面板上,然后单击编辑。
  4. 在面板中,单击分享旁边的下拉箭头,然后选择发布。用户下次查看分享的面板时会看到最新版本。
  5. 单击发布。

公式编辑器中的错误消息类型

本节列出了以下几种错误消息,并提供了解决建议:

  • 最常见的公式错误
  • 一般语法错误消息
  • 数据类型错误消息
  • 指标聚合器错误消息
  • 其他错误消息

最常见的公式错误

有关特定错误消息的更多指导,请参阅下文。

一般语法错误消息

如果您看到以下错误消息,则表示公式中的语法不正确:

  • “公式存在问题。请检查您的计算语法并重试。”

下表列出了此类错误的常见原因。

原因 不正确的公式 正确的公式
双括号不完整。 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("https://您的子域名.zendesk.com/agent/organizations/" + STRING([Ticket organization ID]), [Ticket organization name])

或

LINK("https://您的子域名.zendesk.com/agent/organizations/" + STRING([Ticket organization ID]), STRING([Organization check box]))

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 是数字,因此不要使用引号。

所提供日期的时间单位无效 DATE_DIFF([Ticket solved - Date], [Ticket created - Date], "minutes") 使用 DATE_DIFF 函数时,请确保时间单位(第三个参数)与日期字段的精度匹配。对于没有详细时间(小时、分钟)的日期,仅允许“年”、“月”或“日”。使用不受支持的单位(如“分钟”)将触发错误。

指标聚合器错误消息

错误消息示例 不正确的公式 正确的公式
无法使用 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) 聚合器。使用 VALUE 聚合器,或将指标包装到 ATTRIBUTE_FIX 或 ATTRIBUTE_ADD 函数。 IF COUNT(Solved tickets)>1 THEN "Solved" ELSE "Unsolved" ENDIF

IF ([Ticket status - Unsorted] = "Solved" OR [Ticket status - Unsorted] = "Closed") THEN "Solved" ELSE "Unsolved" ENDIF

此错误消息会出现在计算属性中。使用与 Solved tickets 指标相同的条件解决此问题。

计算属性中不可以使用 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 函数指定聚合级别。在 Update ticket ID 级别进行计算。

“Time in status”已包含聚合器。用 SUM 替换 AVG,或确保“Time in status”仅包含 VALUE 聚合器。 AVG(Time in status)

SUM(Time in status)

Time in status 是带现有聚合器的嵌套指标。不允许在中值以上计算平均值。将最高级别聚合器设置为 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,并尝试将其包含在公式中。
一个计算中最多可以有 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_ALL([Ticket Tags], "support", "sales")
  • IN([Ticket Group], ARRAY( "Support", "Sales"))

INCLUDES 函数仅适用于工单标签属性。其它属性应使用 IN 函数。

[Date range calculated metric] 的公式配置错误。修复后请保存。 COUNT([Date range calculated metric]) 计算指标不支持日期范围计算指标。应改用 result metric calculation。
此处不可使用 [function]。针对工单标签请使用 INCLUDES_ALL 或 INCLUDES_ANY。 IF (CONTAINS([Ticket tags],"sales")) THEN "Sales" ELSE "Prod" ENDIF

INCLUDES_ALL([Ticket tags], "Sales", "Prod")

工单标签只能使用 INCLUDES_ALL 和 INCLUDES_ANY 报告。

由 Zendesk 提供技术支持