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

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

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

请参阅:

  • 公式编写资源
  • 分析函数参考

修复配置错误的公式

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

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

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

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

更新配置错误的公式

  1. 在分析中,单击报告图标 (报告图标)以打开报告库
  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]) 
    此公式用于联接文本,如分析配方:联接属性中所示。使得 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 中创建一个新的数字自定义字段,用于记录额外的任务时间,该方法无需在 Analytics 中进行转换即可使用。或者,使用 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:// yoursubdomain .zendesk.com/agent/organizations/" + STRING([Ticket organization ID]), [Ticket organization name]) 或 LINK("https:// yoursubdomain .zendesk.com/agent/ organization/" + 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]) 
    正确:SWITCH ([Ticket group]) 
    Ticket group 是文本属性,因此所有个案条件都应是文本类型。应将数字 3 放在引号中,使其成为文本。
  • 不可在 SWITCH 语句中使用不同的类型。"1" 是文本,2 是数字。应使用相同类型 
    不正确:SWITCH ([Ticket group]) 
    正确:SWITCH ([Ticket group]) 
    所有个案的结果应为相同类型。应将数字 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 提供技术支持