在Azure Data Factory数据流中使用CONTAINS()函数遇问题求助
ADF数据流Filter Activity表达式错误排查与修正
你的Filter Activity表达式存在两处用法错误,导致筛选未生效,具体问题和修正方案如下:
问题分析
1. contains函数误用
原表达式:contains(record.Organizations.authorOrganization.type,#item.code == 'Y')
contains的作用是检查某个值是否存在于集合或字符串中,无法直接用来判断数组对象的属性条件。record.Organizations.authorOrganization是数组类型,直接访问.type会导致路径错误,必须遍历数组中的每个元素来判断type.code的值。
2. filter函数误用
原表达式:filter(org,#item == 'lib')
filter函数的返回值是符合条件的数组子集,但Filter Activity需要的是布尔值(true/false)来决定是否保留当前行数据,因此这个表达式无法被正确识别为筛选条件。
修正后的表达式
any(record.Organizations.authorOrganization, #item.type.code == 'Y') || contains(org, 'lib')
表达式说明
any(record.Organizations.authorOrganization, #item.type.code == 'Y'):遍历authorOrganization数组,只要数组中存在任意一个元素的type.code等于'Y',就返回true。contains(org, 'lib'):检查org数组中是否包含'lib'元素,存在则返回true。
用你的示例JSON测试,该表达式会返回true,符合你「type.code等于'Y'或org包含'lib'」的筛选需求。
内容的提问来源于stack exchange,提问作者thichxai
相关产品推荐
相关产品推荐

