测试仪和测试滤波器变压器

测试仪和测试滤波器是条件滤波的两个关键变压器。它们用于测试属性值。

测试器

测试变压器(前25中的数字1)通常用于产生是/否结果的单个测试。例如:

  • 有超过六英寸的降雪吗?
  • 这是条大路吗?
  • 温度是否低于零摄氏度?
  • 最后一次用沙子是在24小时前吗?

在这里,如果功能的snowall属性值大于6,则功能将通过。如果小于(或等于)6,此功能将无法通过测试。

测试仪还允许组合多个测试,用户可以使用AND或OR语句组合任意数量的子句。例如,如果我想确定是否要送扫雪机到特定的道路上,我可能会问:

  • 降雪量是否超过6英寸,温度是否低于零摄氏度?
  • 这是一条主要的道路吗(是否有超过6英寸的雪或者(温度是否低于零度,沙土最后一次使用时间是否超过24小时)?

当我有多个测试时,我使用“通过标准”字段控制它们。和/或子句的混合需要一个复合测试,如上所示。但是,无论测试变得多么复杂,它仍然会产生一个“是/否”的结果;特性将通过或不通过这组测试。

注意,我们不局限于简单的平等测试(a=b);在上面还有“大于”和“小于”测试。这是因为测试子句中有许多不同的操作可用。


算子

检测仪转换器中有许多可用的操作员(或在许多使用检测仪对话框的其他位置中):

除了通常的操作员,还有一些基于SQL WHERE子句的。这些包括:

  • 之间
  • 喜欢
  • 匹配正则表达式
  • 包含
  • 开始于
  • 以结束

…另外还有其他测试测试属性和值的存在性:

  • 属性具有值
  • 属性为空
  • 属性为空字符串
  • 缺少属性

新的
“属性有值”是FME2016的新测试。它基本上与其他三个测试相反;即此属性不为空,它不是空字符串,而且它没有丢失。

1更新
在fme2016.1中,“matches regex”运算符更改为“contains regex”。2016.0版本需要整个字符串来匹配正则表达式,而现在只需要匹配字符串的一部分。例如。。。
属性值:abcdesearch字符串:^abmatches regex(2016.0):failed contains regex(2016.1):passed
任何现有的测试人员(即在2016.0版中添加到工作区)将与之前一样,但是新增加的测试人员将展示新的行为。

测试过滤器

testfilter(前25名中的_11)本质上是一种将多个测试变压器组合成一个的方法。而不是测试仪的单通和故障端口,您可以为每个条件创建一个输出端口(它不需要被称为“通过”),并为不符合所有测试条件的功能创建一个输出端口。

testfilter与编程或脚本语言中的case或switch命令非常相似。


直觉修女说…
testfilter非常适合通过一组级联条件过滤特性,例如,这里有一组测试来再次确定是否发出扫雪机:

-有超过六英寸的降雪吗?
-有超过四英寸的降雪吗?这是一条主要道路吗?
-温度是否低于零摄氏度,最后一次使用砂是否超过24小时?

这是一组级联测试,因为如果有超过6英寸的雪,不管怎样,犁还是被送出去了;您不需要测试任何其他标准。所以测试顺序可能非常重要。还请注意,您可以包括复合测试(其中包含AND或OR的测试)。

testfilter具有测试人员可用的全套运算符,例如equals,大于小于诸如此类。依次测试每个条件。

传递的特性通过匹配的输出端口输出。失败的功能将被发送到列表中的下一个条件。因此,将条件按正确的顺序排列是非常重要的。

在这个例子中,用户使用了三个测试变压器(和六个连接)来过滤掉这些数据的不同部分。

使用testfilter,三个测试仪现在被一个变压器替换,只有四个连接。

还要注意testfilter输出端口如何具有自定义命名。这是变压器的另一个优点。


厨师比姆说…
因为testfilter可以执行单个测试(以及多个测试),所以可以专门使用它而不是测试变压器。

结果匹配”

    没有匹配的结果“