Azure Data Flow中如何正确实现not in逻辑?
在Azure Data Flow Filter中实现Conditional Split False分支的等价效果
你之前的表达式存在两个核心问题:
in函数参数顺序错误:Azure Data Flow中in的正确用法是in(待检查的值, 目标数组),你把参数顺序写反了,还重复嵌套in,导致逻辑完全混乱。- Null值处理错误:
toString(null())生成的是字符串"null",但字段本身的null是值类型的null,upper(CUSTOMER_PO_NUMBER)当字段为null时返回null,和字符串"null"不匹配,所以无法保留null值。
要实现和Conditional Split False分支相同的输出,你需要保留所有null值,以及非null但转大写后不在指定排除列表中的值,正确的Filter表达式如下:
isNull(CUSTOMER_PO_NUMBER) || not(in(upper(CUSTOMER_PO_NUMBER), ["FIX","ANGELA","ZERO","$0","INSTALLED"]))
逻辑说明:
isNull(CUSTOMER_PO_NUMBER):直接保留CUSTOMER_PO_NUMBER为null的行;not(in(upper(CUSTOMER_PO_NUMBER), ["FIX","ANGELA","ZERO","$0","INSTALLED"])):对于非null的字段,转大写后检查是否不在排除列表中,符合条件则保留;- 用
||(逻辑或)连接两个条件,覆盖所有需要保留的场景,和Conditional Split的False分支完全等价。
内容的提问来源于stack exchange,提问作者AzSurya Teja
相关产品推荐
相关产品推荐

