FME转换器用法介绍之(Tester and TestFilter)
文章目录
前言:本文介绍的是FME在数据处理中常用于数据测试、数据过滤和数据筛选的转换器 Tester 和 TestFilter。
Tester and TestFilter
一、定义
1.1 Tester
通过特定的条件来判断数据是否符合指定的要求。
1.2 TestFilter
等于使用多个Tester转换器,可以将符合不同要求的数据从不同的输出端口导出。
1.3 区别
两者的区别是Test转换器只进行一次判断,输出结果只有Passed(通过)和Failed(不通过),而TestFilter转换器循允许多级判断,而且允许自定义命名输出端口的名称。两者类似编程语言中的<IF…ELSE>和<IF…ELSE IF…ELSE…>的区别。
二、如何工作
2.1 工作流
首先调出Tester和TestFilter转换器,然后将输入文件连接输入端口,接着打开转换器参数窗口进行设置。
2.2 Tester参数设置
在Test Clauses中设置测试条件,包括测试值、测试运算符和连接逻辑。
判断的方式是:将 Left Value 与 Right Value 基于运算符进行比较。
Left Value 和 Right Value的内容可以是来自输入的属性值、运算表达式、FME属性、公有私有变量或自定义的内容。
运算法则有:
运算符 | 描述 | 值设置 |
---|---|---|
= | 等于 | |
!= | 不等于 | |
< | 小于 | |
> | 大于 | |
<= | 小于等于 | |
>= | 大于等于 | |
In Range | 测试值是否落在指定的数值范围,无边界范围可以通过不设定最大或最小值指定 | 方括号:[ ]表示包含限制值。圆括号:()表示不包含限制值。栗子:(1,9)、[1,9]、(1,9]、(1,)、[,9] 。注意:当大小敏感时无效 |
In | 测试值是否在指定的列表范围内,包括数字和字符 | 通过连字符“-”和分隔符“,”来组合表达列表范围。栗子:1,10,100、1-99、a-z,A-Z、cat,dog,cats and dogs、dogs,1-9,10 |
Like | 测试值是否匹配指定的字符模式 | 需要设置指定的字符和通配符(%),栗子:%徐%,则“蔡徐坤”可以通过,“徐坤”不能通过。注意,当模式为数值时无法使用 |
Contains | 测试值是否包含指定的字符 | 类似运算符(Like),但是不用添加通配符% |
Begins With | 测试值是否用指定的字符开头 | |
Ends With | 测试值是否用指定的字符结尾 | |
Contains Regex | 测试值是否匹配指定的正则表达式 | |
Type Is | 测试值是否为指定的字段类型 | 栗子:Boolean、Double、Integer、Numeric、Alphanumeric、String、XML、JSON |
Encodable | 测试值是否为指定的编码格式 | 栗子:Unicode 32-bit(utf-32)、Windows Cyrillic (windows-12510)、EBCDIC US (ibm037) |
Attribute has a value | 测试属性是否有值 | |
Attribute Is Null | 测试属性是否为空 | |
Attribute is Empty String | 测试属性是否为空字符串 | |
Attribute is Missing | 测试属性是否缺失 |
FME2018版本有取反的功能,FME219则取消了这个功能,并且逻辑连接的方式也有所不同。
- FME2018中的Tester转换器:
- FME2019中的Tester转换器:
2.3 TesterFilter参数设置
TesterFilter等于使用多个Tester转换器,可以自定义命名每个输出端口的名称,用法类似编程中的<IF…ELSE IF…ELSE…>。
参数的设置参照Tester转换器。
2.4 官方文档
英文好的同学建议直接看官方文档,传送门:
Tester
TestFilter