如何在Azure Data Factory中用Filter Activity筛选Rest API Web活动输出
回答
完全可以实现,无需改动现有Web活动拉取REST API、Copy活动写入Blob存储的核心流程,只需要在两个活动之间插入数据处理环节完成筛选即可,根据筛选规则的复杂度可以选两种实现路径:
原生内置活动实现(无额外成本,适配简单筛选场景)
适合按固定字段条件过滤条目、裁剪冗余字段的场景,全程用ADF自带活动完成,不需要额外开发:
- 先定位Web活动输出中有效业务数据的JSON路径,比如多数分页API返回的业务数组在
@activity('你的Web活动名').output.value路径下,鉴权令牌、响应头这类元数据不要纳入后续处理范围。 - 新增Filter活动连接在Web活动之后:
- Items参数填入你定位到的业务数组,例如
@activity('Call_REST_API').output.data - Condition参数写入筛选规则,比如仅保留状态为有效的条目可写
@equals(item().is_valid, true),多条件组合可以用and()、or()函数拼接判断逻辑。
- Items参数填入你定位到的业务数组,例如
- 如果需要剔除条目里的冗余字段(比如不需要的属性列、敏感字段),在Filter活动后追加Select活动,只映射你需要保留的字段即可,未配置映射的字段会被自动丢弃。
- 最后修改Copy活动的源配置,不再直接引用Web活动的原始输出,改为引用Filter/Select活动处理完成的输出数组,后续写入JSON文件到Blob的逻辑保持不变。
小提示:如果需要做简单的结构转换、字段值处理,可以用Set Variable活动存储处理后的数组结果,通过ADF内置表达式完成值转换后再传给Copy活动,不需要额外加其他组件。
代码脚本实现(适配复杂筛选场景)
如果筛选规则涉及复杂逻辑(比如正则匹配、跨字段计算、数据去重、关联校验),内置表达式难以实现,可以在Web活动后插入Azure Function活动或者内联脚本活动:
- 将Web活动返回的原始JSON内容作为入参传入脚本/函数
- 在代码中实现任意自定义筛选、清洗、裁剪逻辑,返回处理完成的结构化JSON结果
- 将脚本/函数的输出直接传给Copy活动作为数据源,后续落盘逻辑不需要调整
注意:筛选环节记得把随接口返回的授权令牌、请求追踪ID这类非业务数据全部剔除,既减少不必要的存储占用,也避免敏感凭据随文件存储泄露。
内容的提问来源于stack exchange,提问作者Azure Cloud Enthusiast
相关产品推荐
相关产品推荐

