如何从Power Query中对OData中的大型数据集进行分页?

时间:2015-01-07 16:53:19

标签: pagination odata powerpivot powerquery

我有一个包含许多大表(数千万行)的OData源。我需要配置PowerQuery(或PowerPivot,无论哪个是工作的最佳工具)来访问此OData源,但是以分页方式执行此操作,以便单个请求不会尝试一次返回1000万行,而是使用多个分页查询构建数千万行的完整结果。我不想手动提交许多不同的$ top和$ skip值的URL来做我自己的手动分页,而是我需要PowerQuery或PowerPivot来处理我的分页。

我希望PQ / PP能够足够聪明地进行分页,可能首先发出一个“计数”查询来确定存在多少行,但似乎并非如此。当我向PQ / PP提供一个大型OData表的URL时,它只是盲目地发出一个查询来检索所有行(实际上,它会发出2个这样相同的查询,这看起来很奇怪),这会导致服务器上的数据库崩溃。

在寻找答案时,我已经看到了PQ / PP可以进行分页的提示,但没有关于如何启用此行为的线索。那么有没有办法告诉PQ / PP使用某种分页来访问大型数据集?如果是这样,我可以设置页面大小吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Web API,可以将PageSize放在EnableQueryAttribute上吗?

[EnableQuery(PageSize = 10)]
public IHttpActionResult Get()
{
  return Ok(customers);
}

答案 1 :(得分:0)

您可以使用递归来获取和追加连续的页面。每个连续的提取使用更高的" start"网址中的行号。如果fetch产生一个空列表,则递归结束。在" M" if语句可以检查空列表,否则追加并递增然后" @"自我引用您当前的函数名称。