Excel 2016中的OData Feed / Power查询未检索全部/复制某些记录

问题描述 投票:0回答:1

在Excel中,我成功连接到Data.Medicare.gov的OData源(网站是https://data.medicare.gov/Hospital-Compare/Healthcare-Associated-Infections-Hospital/77hc-ibv8/data,端点是https://data.medicare.gov/api/odata/v4/77hc-ibv8)。

但是,现在我正在仔细审查和分析数据,我发现我的Excel数据中缺少网站上的一些数据行/记录(https://data.medicare.gov/Hospital-Compare/Patient-survey-HCAHPS-Hospital/dgck-syfz/data),而其他数据行是重复的。在Excel中刷新数据后,会出现一些先前丢失的行,而其他行则会消失。每次刷新时出现,消失或重复的行都是随机的。

例如,医院名称=“Trinitas区域医疗中心”和测量ID =“HAI-1-SIR”的记录在网站上,但有时会出现,然后从Excel数据表中重新出现(__id =“row-6s6r~jx5f .wuje“)每次刷新。但是,总行数不会更改,并且等于可下载文件。

不确定这是否是由于数据集中的大量行(> 170k)造成的。我发现的唯一相关讨论是在https://blog.crossjoin.co.uk/2018/05/03/troubleshooting-data-refresh-performance-issues-with-odata-data-sources-in-power-bi-and-excel-using-fiddler/,但不认为这解决了我的确切问题。

更新1:

Socrata为本网站提供OData Feed服务,回复如下:

[我们]已经能够在Excel中重现这种行为,但我不确定是什么导致它。但是,它似乎不是OData feed本身的问题,因为我可以通过我的浏览器一直访问该行(例如,https://data.medicare.gov/api/odata/v4/77hc-ibv8('row-6s6r~jx5f.wuje')),所以它似乎与Excel如何处理数据。遗憾的是,我无法在网上找到解释原因的原因,因此最好联系Microsoft支持部门以确定他们是否能够进一步提供帮助。

更新2:

经过对Microsoft专业技术支持的广泛故障排除和讨论后,他们(错误地)得出结论,重复记录存在于OData Feed中。回到Socrata的支持,他们考虑到我的观察,这只发生在大数据集上,并能够建议解决问题(见下面的答案)。

excel duplicates odata missing-data powerquery
1个回答
0
投票

Socrata支持发现了这个问题,并建议在OData供稿网址中添加$ top参数,这样就解决了我的问题:

在Excel中加载OData源时,Excel会在大型数据集中加载时自动对背景中的结果进行分页,并且此加载过程会导致重复记录。您可以通过向OData Feed URL添加$ top参数来解决此问题,该参数值大于或等于数据集中的总行数,这将迫使Excel在单个请求中加载所有数据而不是而不是分页结果。例如,如果您输入https://data.medicare.gov/api/odata/v4/77hc-ibv8?$ top = 10000000作为URL,这将加载所有记录,并且不会有任何重复。

Microsoft Office 365支持确认“添加$ top命令确实似乎阻止了重复项。”

更新:

虽然上面的$ top参数最初解决了问题,但我开始在Excel中收到以下错误消息:

无法连接

我们在尝试连接时遇到错误。

详细信息:“Microsoft.Mashup.Engine1.Library.Resources.HttpResource:请求失败:OData版本:3和4,错误:远程服务器返回错误:(500)内部服务器错误。(发生内部错误。请联系Socrata支持,引用诊断代码epsfgirt9lxlekyt89oq25x54)OData版本:4,错误:远程服务器返回错误:(500)内部服务器错误。(发生内部错误。请联系Socrata支持,参考诊断代码58cf025wln5br4qzw6lcrxh3a)

因此,我联系了Socrata支持部门,他们回答了以下问题:

[我们]遇到了同样的错误。我和我们的工程团队进行了核实,他们说他们最近做了一些可能导致这种情况的更新,但也应该修复了潜在的问题。因此,如果从Excel中的OData URL中删除“?$ top = 100000”并使用https://data.medicare.gov/api/odata/v4/yv7e-xc69,那应该可以工作,而不会像之前看到的那样返回重复记录。我今天在几个不同的资产上测试了它,它确实似乎已经修复了......

我使用了常规的OData端点(https://data.medicare.gov/api/odata/v4/yv7e-xc69)并且它没有重复加载。

© www.soinside.com 2019 - 2024. All rights reserved.