在Informatica中是否可限制列的取值范围,应使用哪种转换组件?
Informatica指定列取值范围限制问题解答
首先可以明确:该需求完全可以实现。针对将Item_number列限定在1-10取值范围的场景,根据你的后续处理需求可以选择不同的转换组件:
1. 仅需要保留符合取值要求的行:使用Filter转换
这是最适配该需求的默认组件,配置步骤如下:
- 将携带
Item_number列的上游数据源连接到Filter转换组件 - 在Filter转换的过滤条件配置栏输入规则:
Item_number >= 1 AND Item_number <= 10 - 配置完成后,只有满足取值范围的行才会向下游传递,超出范围的行直接被过滤丢弃
2. 需要同时保留合法/非法行做分流处理:使用Router转换
如果你需要把超出范围的异常行单独存储或做其他处理,用Router转换更合适:
- 将上游数据源连接到Router转换组件
- 新增自定义分组,命名为
合法数据,分组条件配置为Item_number >= 1 AND Item_number <= 10 - Router自动生成的
默认分组会承接所有不满足合法条件的异常行,你可以将两个分组分别连接到不同的下游目标做差异化处理
3. 不需要过滤仅需要标记合法状态:使用Expression转换
如果不希望丢弃任何数据,仅需要给行打是否符合取值要求的标记,用Expression转换即可:
- 在Expression转换中新增输出列
is_valid,数据类型选择整型 - 给该列配置表达式:
IIF(Item_number >= 1 AND Item_number <= 10, 1, 0) - 后续可以根据
is_valid列的取值(1为合法,0为非法)做自定义业务处理
内容的提问来源于stack exchange,提问作者ksp
相关产品推荐
相关产品推荐

