选择节点的功能是根据定义的选择条件,将输入表的数据拆分成两部分,一部分为符合指定条件的数据记录,可以在第一个输出端口中查看,另一部分为过滤掉的数据记录,可以在第二个输出端口中查看,两个端口输出的行数的总和与输入表的输入行数相同。
此处提供了三种配置方式:行属性,通过字段取值来设置选择条件;数字,通过指定行号范围设置条件;行ID,通过匹配一定的行ID模式来设置条件。
对话框选项
行属性
行属性定义条件的方式是基于选定字段筛选的。如果使用行属性的方式设置选择条件,首先要选择一个设置选择条件用的字段,通过对该字段的取值设置选择条件来实现对数据的拆分。一共有以下三种匹配标准:
模式匹配:可以使用通配符或者正则表达式匹配字段中的取值。如果是字符型字段还可以直接从下拉框选择名义值。
下面给出几个正则表达式的例子:

元字符

描述

|将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,"\\n"匹配\n。"\n"匹配换行符。序列"\\"匹配"\"而"("则匹配"("。即相当于多种编程语言中都有的"转义字符"的概念。

^

匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之后的位置。

$

匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配"\n"或"\r"之前的位置。

*

匹配前面的子表达式任意次。例如,z*能匹配"z","zo"以及"zoo"。*等价于{0,}。

+

匹配前面的子表达式一次或多次(大于等于1次)。例如,"zo+"能匹配"zo"以及"zoo",但不能匹配"z"。+等价于{1,}。

?

匹配前面的子表达式零次或一次。例如,"do(es)?"可以匹配"do"或"does"中的"do"。?等价于{0,1}。

{n}

n是一个非负整数。匹配确定的n次。例如,"o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的两个o。

{n,}

n是一个非负整数。至少匹配n次。例如,"o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,} "等价于"o+"。"o{0,}"则等价于"o*"。

{n,m}

m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,"o{1,3}"将匹配"fooooood"中的前三个o。"o{0,1}"等价于"o?"。请注意在逗号和两个数之间不能有空格。

?

当该字符紧跟在任何一个其他限制符(*,,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串"oooo","o?"将匹配单个"o",而"o+"将匹配所有"o"。

范围检查:对于数值型字段可以使用范围检查,输入选择记录的取值范围。当值为空时表示正无穷大或者负无穷大。
仅匹配缺失值:即筛选缺失的记录。则数据表被拆分成两部分,一部分为包缺失值的记录,另一部分为无缺失值的记录。
数字
如果选择数字的方式,需要指定选择表包含数据的起始行号和最后行号。如果勾选"到表的结尾",则选择表中将包含从起始行开始的所有数据。
行ID
如果选择了行ID的方式,需要指定一个正则表达式,用来匹配每一行的ID。另外,可以指定是否区分大小写匹配、是否模糊匹配。勾选模糊匹配则可启用模糊查找,如输入"Row2",则所有包含"Row2"的行ID均可匹配,否则只显示行ID等于"Row2"这一行。
端口
输入端口

0

输入表

输出端口

0

选择表

1

过滤表