简介
RecordSet Filter 组件用于操作 RecordSet,可以对输入的 RecordSet 进行过滤,并生成一个新的 RecordSet。
操作配置
参数配置
配置数据源
参数 | 数据类型 | 描述 | 是否必填 | 默认值 |
输入数据集 | RecordSet | RecordSet Filter 组件的数据源 | 否 | msg.payload |
![image-filter-1](https://qcloudimg.tencent-cloud.cn/image/document/d211dd05c8333ebd09217896577b6732.png)
![image-filter-1](https://qcloudimg.tencent-cloud.cn/image/document/d211dd05c8333ebd09217896577b6732.png)
配置输出字段
用于指定新生成的 RecordSet 中要包含的字段。默认将数据源的字段罗列出来,用户只需要勾选希望输出的字段即可。用户也可以给输出的 RecordSet 注入额外的字段,且字段的默认值将为空。
![image-filter-2](https://qcloudimg.tencent-cloud.cn/image/document/2c269dc85d55d7b82d66f65018a3a43f.png)
![image-filter-2](https://qcloudimg.tencent-cloud.cn/image/document/2c269dc85d55d7b82d66f65018a3a43f.png)
配置过滤条件
用于配置字段需要满足的条件,支持图形化配置(默认)和表达式两种方式。
如果使用图形化配置(默认)方式,用户可以给数据源中的字段配置1到多个原子过滤条件,原子过滤条件间默认是逻辑“与”的关系。
每个原子过滤条件都由三部分组成:字段名、操作、目标值。
字段名:数据源中的字段名。
操作:支持
==,!=,>=,<=,>,<,StartWith,EndWith,Contain,In,NotIn,IsNull,IsNotNull
,详见下表。操作 | 说明 |
== | 判断相等 |
!= | 判断不相等 |
>= | 比较大小 |
<= | 比较大小空 |
> | 比较大小空 |
< | 比较大小空 |
StartWith | 判断字符串是否以另一个字符串开头 |
EndWith | 判断字符串是否以另一个字符串结尾 |
Contain | 判断字符串包含 |
In | 判断是否在列表中 |
NotIn | 判断是否不在列表中 |
IsNull | 判断是否为空 |
IsNotNull | 判断是否非空 |
目标值:支持手动填写和列表选择两种方式。手动填写时,可以将目标值设置常量或输入表达式;列表选择时可以将目标值设置为数据源中其他字段。
![image-filter-3](https://qcloudimg.tencent-cloud.cn/image/document/364d635e379dbc2570d8068ab6218c49.png)
![image-filter-4](https://qcloudimg.tencent-cloud.cn/image/document/dcee43d45f4a62e944a7e051942a974f.png)
![image-filter-3](https://qcloudimg.tencent-cloud.cn/image/document/364d635e379dbc2570d8068ab6218c49.png)
![image-filter-4](https://qcloudimg.tencent-cloud.cn/image/document/dcee43d45f4a62e944a7e051942a974f.png)
原子过滤条件间默认是逻辑“与”的关系。如果用户需要配置更复杂的逻辑,可以使用编排逻辑功能。
每个原子过滤条件有一个唯一的序号,用户在编排逻辑输入框内,用序号对原子过滤条件进行逻辑编排。
支持逻辑与(And)、或(Or)、非(Not)的组合,且忽略大小写。
用户也可以用括号来控制优先级。
![image-filter-5](https://qcloudimg.tencent-cloud.cn/image/document/5a604120c7e2f2e13b21f64027ba36d7.png)
![image-filter-5](https://qcloudimg.tencent-cloud.cn/image/document/5a604120c7e2f2e13b21f64027ba36d7.png)
示例
(1 OR 2) AND NOT 3(1 Or 2) AnD nOT 3(1 AND 2) AND NOT 31 or 2 and (not 3)not 1 or 2 or 3not(1 or 2 or 3)(not 1 or 2) and 31 and not( 2 or 3)1or2and3or4
当图像化配置过滤条件无法满足业务需求时,可以使用表达式输入进行补充。用户需要勾选表达式,并编辑一个返回 bool 类型的 Dataway 表达式。![image-filter-6](https://qcloudimg.tencent-cloud.cn/image/document/45e08d76c7b51def036f221880f5ef67.png)
表达式里面的内容示例如下:
![image-filter-7](https://qcloudimg.tencent-cloud.cn/image/document/579b42e9293ae3fbae0a21e63d1ee652.png)
![image-filter-6](https://qcloudimg.tencent-cloud.cn/image/document/45e08d76c7b51def036f221880f5ef67.png)
![image-filter-7](https://qcloudimg.tencent-cloud.cn/image/document/579b42e9293ae3fbae0a21e63d1ee652.png)
输入 message
message 属性 | 值 |
payload | 默认是 payload,如果用户有配置,则采用用户配置的值 |
error | 空 |
attribute | 空 |
variable | 继承上一个组件输出 message 中的 variable 数据,在 RecordSet Filter 组件中可以操作 Variables,且不会影响输出 message 中的数据 |
输出
组件输出的 message 信息如下:
message 属性 | 值 |
payload | 输出的 RecordSet,其包含的字段为用户配置的输出字段 |
error | 执行成功后,error 为空;执行失败后,error 为 dict 类型,包含“Code”和“Description”字段:“Code”字段表示错误类型,“Description”字段表示错误具体信息 |
attribute | 类型为 dict,继承上一个组件的 attribute |
variable | 继承上一个组件的 variable |
案例
针对一个学生表按指定条件进行过滤,示例图如下。
![image-filter-8](https://qcloudimg.tencent-cloud.cn/image/document/bd73547a11779769d121dec3e3354f14.png)
![image-filter-8](https://qcloudimg.tencent-cloud.cn/image/document/bd73547a11779769d121dec3e3354f14.png)
1. 用 RecordSet Encoder 组件创建一个学生表,包含
name, age, address, socre, adult
字段,并在 RecordSet Encoder 组件里面添加 SetPayload 组件,在学生表中使用表达式添加数据。![image-filter-9](https://qcloudimg.tencent-cloud.cn/image/document/70347735c705d08fd15f2f47e76f4a72.png)
![image-filter-10](https://qcloudimg.tencent-cloud.cn/image/document/cd5d22b80f59da25d7aea6412b0bee27.png)
![image-filter-9](https://qcloudimg.tencent-cloud.cn/image/document/70347735c705d08fd15f2f47e76f4a72.png)
![image-filter-10](https://qcloudimg.tencent-cloud.cn/image/document/cd5d22b80f59da25d7aea6412b0bee27.png)
2. 用 Filter 组件进行过滤,生成一个新的学生表,仅包含 ![image-filter-11](https://qcloudimg.tencent-cloud.cn/image/document/8fcba4ddbeafec82970ad1cd87243400.png)
name, age, address
3个字段,并配置5个原子过滤条件,最后对原子过滤条件进行逻辑编排 (1or2)and not3 and4 and5
,其中每个数字都代表对应序号的原子过滤条件。
![image-filter-11](https://qcloudimg.tencent-cloud.cn/image/document/8fcba4ddbeafec82970ad1cd87243400.png)
3. 在调试模式下进行单元测试,并查看结果。输出的结果将只包含一个学生的数据:![image-filter-12](https://qcloudimg.tencent-cloud.cn/image/document/14570cb9ffae4b01363a932df324689c.png)
["王五", 30, "湖南省长沙市"]
![image-filter-12](https://qcloudimg.tencent-cloud.cn/image/document/14570cb9ffae4b01363a932df324689c.png)
![image-filter-13](https://qcloudimg.tencent-cloud.cn/image/document/fc9ae7e9c9b892ecb855f3d6fd053157.png)
![image-filter-14](https://qcloudimg.tencent-cloud.cn/image/document/9eac7ba4a1285def932e9cdf1f6be73e.png)
![image-filter-13](https://qcloudimg.tencent-cloud.cn/image/document/fc9ae7e9c9b892ecb855f3d6fd053157.png)
![image-filter-14](https://qcloudimg.tencent-cloud.cn/image/document/9eac7ba4a1285def932e9cdf1f6be73e.png)