FME轉換器 測試(Tester and TestFilter)


前言:本文介紹的是FME在數據處理中常用於數據測試、數據過濾和數據篩選的轉換器 TesterTestFilter

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轉換器,然後將輸入文件連接輸入端口,接着打開轉換器參數窗口進行設置。
tester的工作流

2.2 Tester參數設置

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轉換器:
    Tester2018
  • FME2019中的Tester轉換器:
    Tester2019

2.3 TesterFilter參數設置

TesterFilter等於使用多個Tester轉換器,可以自定義命名每個輸出端口的名稱,用法類似編程中的<IF…ELSE IF…ELSE…>。
參數的設置參照Tester轉換器。
TestFilter_param

2.4 官方文檔

英文好的同學建議直接看官方文檔,傳送門:
Tester
TestFilter

三、其他

對FME有興趣的人可以去看看我的個人博客:藍線白框
打不開的話,請戳這裏:博客地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章