如何解决Excel Power Query 自定义函数编辑器可捕获未找到的值
需要指导为未从 API 找到的 NPI 值添加捕获错误。该表有 2000 个 NPI 编号,其中一些不会在 API 调用中找到。当我运行此函数时,它会在找不到匹配项时停止并出错。我希望函数继续运行并将错误放在适当的行上。
let
Source = (NPPES_API as any) => let
Source = Json.Document(Web.Contents("https://npiregistry.cms.hhs.gov/api/?version=2.1&number=" & NPPES_API)),results = Source[results],results1 = results{0},addresses = results1[addresses],addresses1 = addresses{0},#"Converted to Table" = Record.ToTable(addresses1),#"Removed Columns" = Table.RemoveColumns(#"Converted to Table",{"Name"}),#"Removed Top Rows" = Table.Skip(#"Removed Columns",4),#"Removed Blank Rows" = Table.SelectRows(#"Removed Top Rows",each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_),{"",null})))
in
#"Removed Blank Rows"
in
Source
解决方法
当您搜索不存在或无效的 NPI 编号时,服务器似乎在其响应中包含 Errors
字段。所以也许检查这个条件,然后相应地扩展响应。
下面是 NPI 编号列表的示例实现(为了从服务器引出和处理错误响应,其中一个故意无效)。
let
npiNumbers = {"1245319599","abc"},getDataForNpiNumber = (someNpiNumber as text) as record =>
let
json = Web.Contents("https://npiregistry.cms.hhs.gov/api/",[
Query = [version = "2.1",number = someNpiNumber]
]),parsed = Json.Document(json),row = [
npiNumber = someNpiNumber,data = Table.FromRecords(Record.FieldOrDefault(parsed,"results",{})),errors = Table.FromRecords(Record.FieldOrDefault(parsed,"Errors",{}))
]
in row,rows = List.Transform(npiNumbers,getDataForNpiNumber),data = Table.FromRecords(rows)
in
data
它应该为您提供一个表格,其中包含请求的每个 NPI 编号的行。每行本身应包含 3 个字段:
-
npiNumber
(请求的 NPI 编号) -
data
(从服务器收到此 NPI 编号的数据,如果发生错误则为空表) -
errors
(从服务器收到此 NPI 编号的错误,如果服务器成功完成请求,则为空表)
然后,您可以根据需要展开表格的行并向下钻取(因为您尚未描述要对数据执行的操作或需要如何对其进行结构化)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。