测试仪和测试滤波器变压器
测试仪和测试滤波器是条件滤波的两个关键变压器。它们用于测试属性值。
测试器
测试变压器(前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可以执行单个测试(以及多个测试),所以可以专门使用它而不是测试变压器。 |