You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory设置变量If条件报错:无分页场景属性选取失败

解决Azure Data Factory分页URL提取的类型不兼容问题

问题场景

将API响应以JSON格式存储到Blob存储,通过Lookup Activity读取JSON后设置变量提取下一页分页URL,用于Until Activity遍历所有页面。当前逻辑在存在分页时(link为数组)正常运行,但无分页时link为单个对象,执行表达式时报错:

expression cannot be evaluated because property 1 cannot be selected object. properties can only be selected by names

原使用的表达式:

@if(
equals (activity('LookupActivity').output.firstRow['feed']['link'][1]['@rel'], 'next'),
activity('LookupActivity').output.firstRow['feed']['link'][1]['@href'],
''
)

问题原因

无分页时,JSON中的link是单个对象而非数组,直接使用数字索引[1]访问对象属性会触发错误——对象仅支持通过属性名访问,不支持数字索引。

解决方案

修改表达式,先判断link的类型(数组/对象),再分情况处理:

@if(
    isArray(activity('LookupActivity').output.firstRow['feed']['link']),
    # 当link是数组时,沿用原有逻辑判断索引1的元素是否为next页
    if(
        equals(activity('LookupActivity').output.firstRow['feed']['link'][1]['@rel'], 'next'),
        activity('LookupActivity').output.firstRow['feed']['link'][1]['@href'],
        ''
    ),
    # 当link是对象时,直接判断当前对象是否为next页(无分页时通常为self,会返回空)
    if(
        equals(activity('LookupActivity').output.firstRow['feed']['link']['@rel'], 'next'),
        activity('LookupActivity').output.firstRow['feed']['link']['@href'],
        ''
    )
)

逻辑说明

  1. 用isArray函数判断link是否为数组
  2. 若是数组,继续使用原逻辑检查索引1的元素@rel是否为next,是则提取@href,否则返回空
  3. 若不是数组(即单个对象),直接检查该对象的@rel是否为next,是则提取@href,否则返回空

内容的提问来源于stack exchange,提问作者Kate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:08:18