文章目錄
前言:本文介紹的是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