Azure Data Factory读取可变JSON时规避嵌套字段不存在报错的方法问询
Azure Data Factory JSON空字段容错取值方案
你可以通过以下几种方式实现类SQL Server lax模式的容错效果,避免字段为空/不存在时的报错:
方案1:使用安全导航运算符(推荐)
ADF表达式现已支持?安全导航运算符,当前置节点为null或不存在时会直接返回null,不会抛出访问异常,配合coalesce函数可自定义默认返回值:
@{coalesce(activity('Lookup1').output.firstRow.Information?.Area?.AreaName, '')}
上述表达式中如果
Information为null、Area不存在/为null、AreaName不存在/为null,都会直接返回你设置的默认空字符串,不会触发报错。如果不需要默认值,直接省略coalesce包裹即可。
方案2:逐层if判断(兼容旧版ADF)
如果使用的ADF版本不支持安全导航运算符,可以逐层校验每个节点是否为null:
@{ if( not(equals(activity('Lookup1').output.firstRow.Information, null)), if( not(equals(activity('Lookup1').output.firstRow.Information.Area, null)), activity('Lookup1').output.firstRow.Information.Area.AreaName, '' ), '' ) }
方案3:Lookup阶段预处理
你也可以在Lookup组件对应的JSON数据集配置中,开启缺失字段按null处理的配置,或者在结构映射中提前给Information.Area.AreaName设置默认值,后续取值时直接读取该字段即可。
内容的提问来源于stack exchange,提问作者d2907
相关产品推荐
相关产品推荐

