的If then else函数以几种不同的方式在计算中使用,包括过滤、分组、存储和重新标记结果。IF THEN ELSE函数测试一个条件,然后根据该条件的结果返回一个值。
IF THEN ELSE表达式可以用两种方式定义:
- IF(布尔条件)THEN(真值)ELSE(假值)ENDIF:返回的结果取决于条件是通过还是失败。
- IF(布尔条件)THEN(真值)ENDIF:返回的结果总是真实的结果。如果条件表达式失败,结果将为空。
此外,您可以嵌套多个IF THEN ELSE语句。有关更多信息,请参见嵌套多个IF THEN ELSE函数在下面。
有关Explore中所有可用函数的信息,请参见探索函数参考.
将结果分组
您可以使用IF THEN ELSE函数对结果进行分组或存储。这使您能够重新标记、排除或分割结果以指示较高或较低的值。当将分组和筛选结合在一起时,可以按单个值突出显示结果。
本节将展示如何根据条件表达式的结果重新标记结果。
标记分组结果
您可以使用IF THEN ELSE函数对结果应用不同的标签,这取决于条件表达式的结果。例如,您可以使用IF THEN ELSE来标记结果是高于还是低于指标的目标。这对于快速确定标题数字是否超过目标非常有用。
本例使用IF THEN ELSE函数来指示代理是高于还是低于目标第一次应答时间。您可以使用任何属性、指标和目标复制此示例。
根据第一次回复时间标记结果
- 在计算()菜单,按标准计算属性.
- 下功能,点击添加.
- 为您计算的属性命名为第一次回复时间测试.
- 从函数列表中选择If then else.
- 双击_boolean_condition为了突出它。
- 对象中选择指标选择一个字段下拉列表或在指标名称中键入。这个例子使用了SUM(第一次回复时间(分钟)).
- 输入大于符号(>)和目标金额。
- 为_value_if_true输入“在”双引号。注意:您还可以替换元素或其他标签。例如,您可以选择您的发票号码属性_value_if_true,以查看收入超过10万元的发票编号。
- 为你的_value_if_false输入“下”双引号。
- 在计算从,选择要在报表中使用的属性。如果您没有选择某个属性,则计算结果将根据总数进行衡量。
- 点击保存.
- 点击添加在任何属性面板中。
- 从属性下拉列表中选择您的属性。
过滤结果
通过删除ELSE语句,可以使用IF THEN ELSE对结果进行过滤。删除false参数后,报告将只列出真实结果。类中添加属性在大多数情况下更容易过滤器部分的报告,但如果希望在处理之前计算结果或执行惟一的计算,则可以使用此方法。
度量过滤结果
您可以过滤您的报告,以只显示高于或低于指定度量值的结果。例如,您可以将结果限制为仅显示首次回复时间超过10分钟的受让人名称。遵循与上面标注示例相同的步骤,但使用以下公式:
IF (SUM(第一次回复时间(min))>10 THEN[受让人名称]ENDIF . IF (SUM(第一次回复时间(min)
将属性添加到报表时,只会显示首次回复时间超过10的受让人。
按属性筛选计算
除了基于度量的过滤结果之外,您还可以将计算过滤到特定的属性值。如果您希望对一个属性值执行计算并显示原始度量结果,或者对其他值执行不同的计算,则此公式非常有用。
下面的示例为支持票证标记计算每个票证的回复数量,但是您可以使用任何属性值和计算来复制这个示例。
将计算限制在属性值上
- 在计算()菜单,按标准计算公制.
- 命名你计算的度量。
- 下功能,点击添加.
- 从函数列表中选择If then else.
- 双击_boolean_condition为了突出它。
- 属性中选择包含限制值的属性选择一个字段下拉列表或在属性名中键入。这个例子使用了票标签.
- 输入等号(=),并以“双引号”显示属性值。这个例子使用=“支持”.
这个条件表达式将把您的计算限制到输入的属性值。
- 在_value_if_true输入您的计算。
- 删除其他的而且value_if_false.你可以使用value_if_false为表达式失败时的结果提供替代公式。本例没有使用false选项,因此删除了ELSE语句。
- 点击保存.
- 在指标面板中,单击添加,然后选择要添加到报告中的计算指标。
嵌套多个IF THEN ELSE函数
如果在公式中使用多个ELSE If语句,则可以使用ELIF来简化表达式。例如,如果您试图在第一次回复时间大于10、等于10或小于10时显示不同的数字,则可以使用ELIF表达式来避免编写多个ELSE if语句。
这个例子的条件表达式如下所示:
IF (SUM(第一次应答时间(min))>10) THEN 1 ELIF (SUM(第一次应答时间(min))=10) THEN 2 ELIF (SUM(第一次应答时间(min))<10) THEN 3 ENDIF . 1
此外,还可以在条件之后添加ELSE语句。如果所有条件都不为真,则使用ELSE值。
嵌套多个条件IF THEN ELSE语句对于创建几个不同的组或根据不同的条件表达式进行过滤非常有用。
有关可用于计算多个条件表达式的另一种方法,请参见使用SWITCH添加多个条件表达式.
15个评论
格雷姆,尤金
嗨,伙计们,
在公式中直接使用属性值似乎不能进行正确的计算(我只是收到了所有门票,而不是自定义字段中具有非空白值的预期门票)。
您正在编写关于在公式中使用属性的内容,但是展示了带有这些属性标记的示例。这是为自定义票务字段构建度量的正确方法吗?这里的文档不清楚,还是我遗漏了什么?
嗨安德烈Kamarouski,你能试着从“NULL”中删除引号吗?NULL不是一个值,它本质上是“空”:-)
这里有一个类似的例子这篇文章.
我希望这能有所帮助,但如果你需要更多帮助,请告诉我们。谢谢!
嗨@……,我现在明白了!=)谢谢!
我不确定我这样做是否完全正确,或者我是否需要制定一套完全不同的自定义指标来实现这一点,但我正试图为“服务协议”向我的组织添加一些自定义字段。每个协议(每个组织可能有3个)都有“合同号”、“购买小时数”和“合同价值”。我需要拉入购买的小时数和合同号,以便对“购买的小时数”进行查询。我已经能够用一个合约轻松地做到这一点,但现在当我们有多个合约涉及时,它会导致一些错误的数据。所以我想要一个超级智能的领域。我需要一个知道显示与合同编号使用相关的购买小时数。匹配的字段称为“Ticket Sage Reference”(也是自定义的),存在于票据中。我想说的是
IF ([Ticket Sage Reference]=VALUE(ContractNumber))
然后1
ELSE IF ([Ticket Sage Reference]=VALUE(ContractNumber2))
然后2
ELSE IF ([Ticket Sage Reference]=VALUE(ContractNumber3))
然后3
ENDIF
然后是真正显示内容的
如果([CustomMetric] = 1)
然后值(ContractNumber1)
ELSE IF ([CustomMetric]=2)
然后值(ContractNumber2)
ELSE IF ([CustomMetric]=3)
然后值(ContractNumber3)
ENDIF
我对函数很不好,请帮忙。我想我可能已经到了付钱给Zendesk让他们帮我写这篇文章的时候了,但我想看看在我这么做之前,是否有人能给我指引亚博正确的方向。
嗨亚当边缘国脚谢谢你的问题。我不确定你在这里是否能完全满足你的需要。然而,我真的认为你应该在我们的探索问答部分问这个问题
https://support.亚博zendesk.com/hc/en-us/community/topics/360001200893
更多的客户会在那里看到它,而且总有可能有人已经解决了这个问题。谢谢!
我有一个问题,我正在尝试建立一个查询未解决的门票与ID以及天数的门票已经打开。这是一个IF-THEN-ELSE计算还是有一个属性会给我这些结果?
嗨CaSonya,
请参阅探索配方:报告字段的持续时间因为这将为您提供票证在整个生命周期中被设置为特定状态的时间。希望这能有所帮助!:)
产品:支持
数据集:更新历史
我已经成功创建了一个计算字段,当违反SLA状态为“0”时,该字段将显示“1”的值,使用以下公式:
IF (D_COUNT(违规SLA票)=0)THEN 1 ELSE 0 ENDIF
有办法求出这个值的和吗?我试图获得这个指标的加权平均值,以获得每个票组的计算SLA%。然而,我不能让SUM函数工作。我不能使用“SLA目标状态”进行相同的计算,因为这不是一个度量。
我尝试了其他Explore函数,但我也无法构建与SUM聚合器一起工作的类似度量。我可以建议的一个解决方法是在SLA数据集下构建一个自定义Tickets度量
-然后是另一个指标,从门票总数中减去违反SLA门票的数量。
这应该给你票的计数没有任何违反SLA。您将能够根据票务组或其他属性对该度量的结果进行切片。
嗨,唠叨,
我能够使用您提到的计算度量函数来创建一个新的服务水平度量。
谢谢你的真知灼见。
嗨,团队,
这里需要一些帮助:
IF (VALUE(完整分辨率时间(min)) <= 60*5) THEN "< 5小时"
ELIF (VALUE(完整分辨率时间(min)) <= 60*24) THEN "< 24小时"
ELIF (VALUE(完整分辨率时间(min)) <= 60*24*2) THEN "< 48小时"
ELIF (VALUE(完整分辨率时间(min)) <= 60*24*7) THEN "<周"
ELIF (VALUE(完整分辨率时间(min)) > 60*24*7) THEN“> A Week”
ENDIF
使用此计算,“< 5小时”内的任何结果都不包含在“<24小时”中。任何包含在<5和<24中的,都不会出现在<48等中。这不是IF ELSE函数的工作方式。上面的计算实际上是这样的:
IF (VALUE(完整分辨率时间(min)) <= 60*5) THEN "< 5小时"
ELIF (VALUE(完整分辨率时间(min)) > 60*5 AND VALUE(完整分辨率时间(min)) <= 60*24) THEN "< 24小时"
ELIF (VALUE(完整分辨率时间(min)) > 60*24 AND VALUE(完整分辨率时间(min)) <= 60*24*2) THEN "< 48小时"
ELIF (VALUE(完整分辨率时间(min)) > 60*24*7 AND VALUE(完整分辨率时间(min)) <= 60*24*7) THEN "<周"
ELIF (VALUE(完整分辨率时间(min)) > 60*24*7) THEN“> A Week”
ENDIF
这是不正确的行为。
你能建议我如何能有第一次计算工作正确?我想让它返回我为仪表板图表要求的值
我的第一个想法是简单地做多个if,但您的专栏不支持这一点。它必须是一次计算,而不是多次。
还有,你为什么不能按我在计算中提供的顺序对结果进行排序呢?A-Z Z-A总和不是我想要的。我希望结果显示的顺序与公式指定的顺序相同
没错,这就是IF THEN ELSE函数在Explore查询构建器中的工作方式——下一个ELIF语句只在前一个语句没有成功的情况下才会被考虑;如果一个条件为真,它将跳过后面的条件并执行该语句。恐怕没有办法让Explore返回所有为真IF/ELIF语句的值。
您可以探索的另一种选择是为每个条件创建单独的属性,并根据票据是否满足条件让属性返回True或False(或任何字符串)。这样,每个括号都有多个列,表示票据是否满足条件声明。
关于值的顺序-一个变通的方法是创建另一个自定义属性(一个)有序集合),以使报表按所需的顺序显示值。我同意,在默认情况下,属性值的排序方式与公式中列出的条件相同,这样会方便得多。如果你有时间,我们将非常感激如果你可以创建一个帖子在产品反馈专题在我们的社区,关于您的任何反馈或功能要求。Product团队积极监控线程,这将是与其他有类似需求的用户交流的最佳渠道。
谢谢要命!
嗨,团队,
需要你帮忙建立一个属性函数,比如,
如果“A”是空的,那么“B”,如果“B”是空的,那么“C”,如果“C”是空的,那么“D”,否则“A”
我试图使用下面的方法构建,但它只在A为空白时返回B的值,
如果([a] = null),则
[B]
Elif ([b] = null) then
[C]
Elif ([c] = null) then
[D]
Elif ([d] = null) then
(一)
ENDIF
谢谢,
光辉
Explore根据它发现的第一个条件TRUE执行公式。因此,如果满足条件[A]=NULL,那么它不再检查后面的语句,并立即返回值[B]。您需要向每行添加更多的条件,以使属性按照预期的方式运行。也许是这样的:
如果[a]= null and [b]!= null then [b]
Elif [a]= null and [b]= null and [c]!= null then [c]
Elif [a]= null and [b]= null and [c]= null and [d]!= null then [d]
其他(一个)
ENDIF
谢谢你,加布,这很有帮助。
请登录留下评论。