You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SharePoint列表仅导入指定ID单行数据至Excel以优化刷新速度

优化SharePoint列表数据加载:仅获取指定ID的单行记录

问题背景

现有一个含100列、2700行的在线SharePoint列表作为唯一数据源,需要在Excel中通过ID号获取特定行记录。当前使用Power Query先加载全表再筛选的方式,导致刷新耗时久、文件体积冗余增大,希望实现仅加载目标行以提升效率。

当前冗余查询代码:

Source = SharePoint.Tables("https://XXX.sharepoint.com/sites/XXX", [Implementation=null, ApiVersion=15]),
#"xxxxxxxx-xxxx-xxxx-b766-71e3781e9f40" = Source{[Id="xxxxxxxx-xxxx-xxxx-b766-71e3781e9f40"]}[Items],
#"Keep relevant row" = Table.SelectRows(#"xxxxxxxx-xxxx-xxxx-b766-71e3781e9f40",each [Id]=relevant number)

解决方案

核心是让SharePoint服务器先执行筛选,仅返回目标行数据,避免全表加载后本地筛选。以下两种方法均可实现:

方法1:直接使用OData.Feed构造筛选请求

通过OData协议直接向SharePoint服务器发送带筛选条件的请求,服务器会提前过滤数据后返回,大幅减少传输量。

替换后的查询代码:

// 替换为你的实际配置
siteUrl = "https://XXX.sharepoint.com/sites/XXX",
listName = "你的列表名称", // 可在SharePoint列表设置中查看列表名称
targetId = 123, // 替换为需要获取的记录ID

// 构造带筛选条件的OData请求地址
odataRequestUrl = siteUrl & "/_api/web/lists/getbytitle('" & listName & "')/items?$filter=Id eq " & Text.From(targetId),
// 加载筛选后的单行数据
Source = OData.Feed(odataRequestUrl, null, [Implementation="2.0"])

方法2:优化原有SharePoint.Tables查询(保留原有数据源入口)

如果希望继续使用SharePoint.Tables,需确保查询折叠功能生效,让筛选逻辑推送到服务器执行:

修改后的查询代码:

Source = SharePoint.Tables("https://XXX.sharepoint.com/sites/XXX", [Implementation=null, ApiVersion=15]),
listItems = Source{[Id="xxxxxxxx-xxxx-xxxx-b766-71e3781e9f40"]}[Items],
// 筛选操作会被推送到SharePoint服务器执行(需查询折叠生效)
targetRow = Table.SelectRows(listItems, each [Id] = relevant number)

验证查询折叠是否生效:查看Power Query编辑器中targetRow步骤的图标,若为闪电图标则说明服务器端筛选生效;若为表格图标,则表示仍在本地筛选,需检查筛选条件是否符合SharePoint数据源的折叠要求。

效果验证

  • 刷新速度:仅传输目标行的100列数据,避免2700行全量加载,刷新耗时显著降低
  • 文件体积:不会因加载全表产生冗余数据,文件大小保持合理

内容的提问来源于stack exchange,提问作者Stephane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:57:43