Power Query调用API的自定义函数无结果时出错,如何跳过错误继续运行?
问题原因
你遇到的报错是因为当输入的NPI值在线上系统不存在时,API会返回空列表,此时代码中Source{0}尝试提取列表第一个元素就会触发「枚举中没有足够元素完成操作」的错误,导致查询终止。
解决方案
我们可以通过try...otherwise语句捕获错误,当请求无返回时直接输出空表,不打断后续值的处理,修改后的函数代码如下:
(MedStatus)=> let Source = Json.Document(Web.Contents("https://data.cms.gov/data-api/v1/dataset/9138d25a-5d85-4a12-b3c9-070e544486db/data?filter[NPI]=" & Text.From(MedStatus))), // 捕获取数错误,无匹配数据时返回null Source1 = try Source{0} otherwise null, // 仅取到有效数据时执行后续转换,否则返回空表 Result = if Source1 <> null then let #"Converted to Table" = Record.ToTable(Source1), #"Transposed Table" = Table.Transpose(#"Converted to Table"), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]) in #"Promoted Headers" else #table({}, {}) in Result
补充注意事项
- 如果运行时出现Web.Contents相关的权限提示,在Power Query的「数据源设置」中把该API域名加入允许列表,选择匿名访问即可。
- 调用该函数处理整列数据后直接展开结果列,无匹配数据的行对应字段会自动填充空值,不会打断整体处理流程。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

