(免责声明:本信息经自动翻译工具处理;我们力求准确,但译文可能无法完全体现原文的含义、语境或意图)
你好,a5438
欢迎来到微软问答论坛。
感谢您的提问。您看到的对话框显示的是从源文件读取/传输的数据量,而非磁盘上.xlsx文件的大小。以下是详细说明及可尝试的性能优化方案:
可能的原因
读取整个工作簿而不是单个工作表/表格
- 使用 数据 ▸ 获取数据 ▸ 从工作簿 时,Power Query 会先导入整个文件作为 Binary,然后展开。如果“示例文件/转换文件”步骤展开了所有工作表、命名区域和表格,就会读取全部内容(包括隐藏表),导致数据量暴增。
错误的合并导致笛卡尔积
- 如果 合并查询时没有正确的键,或者数据类型不匹配,会产生 交叉连接,行数成倍增加(百万 → 十亿),数据量瞬间膨胀。
过早展开嵌套结构
- 在过滤之前展开 表格、记录、列表 或 JSON/XML,会导致数据量和内存占用急剧增加。
过滤和列精简过晚
- 如果在最后才删除不需要的行和列,Power Query 仍需传输和检查所有数据,造成大量无用数据处理。
加载到数据模型并自动检测类型
- 加载到 数据模型(Power Pivot)时,自动检测数据类型和关系会强制全量扫描,增加传输量和处理时间。
隐私级别和 Fast Combine 设置
- 严格的 隐私级别会导致 Power Query在源之间缓冲数据,增加副本。如果关闭 Fast Combine,PQ 可能多次暂存数据。
网络位置(SharePoint/OneDrive)+ 预览
- 从 SharePoint/OneDrive读取时,每次预览和步骤验证都会通过网络获取数据,列分析和预览会重复读取大量数据。
工作簿中包含图片或二进制内容
- 如果工作簿嵌入了 数据透视缓存、高分辨率图片或 OLE 对象,导入时会读取这些二进制内容,即使你只需要一个工作表。
如何检查并优化
检查第一步
- 在 应用的步骤中点击第一步,如果看到只有一个名为 Content 的二进制列,说明导入了整个文件。
- 应使用 导航选择所需的工作表或表格。
尽早精简
- 将 保留行(过滤)和 保留/删除列步骤尽量提前。
- 最佳顺序:导航 → 保留所需列 → 过滤行 → 类型转换。
检查合并
- 确认合并查询的键正确且数据类型匹配。
- 如果合并后行数暴增,说明存在多对多或交叉连接,需要修正键或预聚合。
关闭重型预览
- 在 PQ 编辑器:视图 ▸ 列质量/列分布/列分析 → 关闭。
- 文件 ▸ 选项和设置 ▸ 查询选项 ▸ 数据加载:
设计时限制数据
- 添加临时步骤 Table.FirstN(Source, 10000),设计完成后删除。
加载目标
- 在 关闭并加载到… 中选择 仅创建连接(用于中间查询),只加载最终精简后的查询到工作表或数据模型。
隐私和 Fast Combine
- 在 查询选项 ▸ 隐私中设置一致的隐私级别,并开启 Fast Combine。
列类型
- 尽早将数值/日期列设置为正确类型,避免后期文本转换导致性能问题。
推荐导入模式(处理大型 Excel 文件)
- 在源工作簿中创建只包含所需列的表格(数据 ▸ 从表/范围)。
- 在目标工作簿中使用 获取数据 ▸ 从 Excel 工作簿 → 精确导航到该表格。
- 在 PQ 中删除其他列、过滤行、设置类型、重命名列。
- 关闭并加载到… → 仅创建连接,最终加载精简后的查询。
如果必须使用 SharePoint/OneDrive
- 优先使用 从 SharePoint 文件夹/列表获取数据并精确导航到文件和表格。
- 避免导入整个 SharePoint 文件夹,除非需要多个文件。
- 使用 Binary ▸ 转换文件向导时,确保示例文件步骤只选择一个工作表或表格。
希望这能帮到您。如需进一步协助,请随时联系。
若此回答对您有帮助,请点击“接受答案”并给予好评。若对此回答有其他疑问,请点击“评论”。
注:若需接收本讨论串的相关邮件通知,请按[我们的文档]指引启用邮件通知功能。