- 只要数据架构相同,Power Query 就可以将本地或云文件夹中的多个文件合并在一起。
- 使用示例文件可以更轻松地应用批量转换,例如删除顶部行或更改标题。
- 当列不完全匹配时,会存在一些限制,需要手动清理或使用 VBA 脚本来处理复杂情况。
想象一下,你手头有一堆散落在各个文件夹里的月度或周度报告,与其浪费一上午的时间疯狂复制粘贴数据,不如只需点击几下鼠标,就能将所有内容整合到一个Excel 表格中。这正是 Power Query 的用武之地,它堪称数据处理者的得力助手,能够轻松合并结构相同的文件。
这个系统最棒的地方在于它不局限于本地电脑上的文件夹;你可以从SharePoint 站点、Azure 数据湖或 Azure Blob中提取数据。确保数据流畅运行的关键在于文件架构相同,也就是说列必须匹配。不过,Power Query 本身也足够智能,能够自动清理数据,去除任何冗余或不必要的行。
逐步组合过程

连接到数据源后,首先会看到文件系统视图。其中最重要的列是“内容”,它包含了每个文档的二进制表示。点击其中一个二进制值,程序会尝试判断它是 CSV、JSON 还是 Excel 文件,以便打开它。要合并整个批次的文件,您有两种选择:直接点击“合并”按钮;或者,如果您更注重细节,可以选择“转换数据”来筛选文件列表(例如,忽略特定文件夹),然后再进行合并。
进入合并对话框后,Power Query 会使用示例文件来分析数据结构。默认情况下,它会选择列表中的第一个文件,但如果存在更能代表数据集的文件,您可以更改它。在这里,您可以选择跳过包含错误的文件,这在报表损坏或为空时非常有用,可以防止整个过程停止。
输出管理和数据清洗

接受合并后,系统会在后台进行一些技术处理:它会创建一个示例查询和一个参数化函数。这意味着您对示例文件所做的任何更改都会自动复制到文件夹中的所有其他文件。例如,如果您的 CSV 文件在实际数据之前有四行不必要的标题行,您可以转到转换查询并使用删除顶部行的选项来清理这些冗余数据。
清理行之后,务必应用“使用第一行作为标题”功能。请注意,执行此操作时,Power Query 通常会自动添加一个数据类型转换步骤。如果在返回主查询时看到“找不到列‘Column1’”的错误提示,请不要担心;这是正常现象,因为您在示例中重命名了列,后续步骤不再识别旧名称。只需从“已应用步骤”窗格中删除该错误步骤,一切即可恢复正常。
共同挑战与先进替代方案

有时候,事情并非总是那么简单,我们会遇到格式不完全相同的文件。例如,如果您的 ServiceNow 报告中,一个标题名为“resolved_on”,另一个标题名为“closed_on”,那么 Power Query 可能会出现问题,因为它要求文件结构保持一致。如果示例文件与其他文件不完全匹配,该工具可能会忽略不匹配文件中的信息,或者抛出导入错误。
如果数据结构完全混乱或数据量巨大(超过一百万行 Excel 数据),还有其他选择。一些用户选择使用基于 CSV 接口的 VBA 脚本,这样可以合并文件而不会重复显示标题,无论字段或记录分隔符在不同文件中是否不同。虽然 Windows Shell 速度极快,但在处理嵌入式换行符时经常会出错,而强大的 VBA 解决方案不会占用过多内存,并且可以轻松处理数百万条记录。

要完成此过程,在 Power Query 中合并数据后,请务必在加载最终表格之前,为每一列分配正确的数据类型(例如,日期列为“日期”,收入列为“货币”等)。您可以通过筛选“源名称”列来验证一切是否正确,确保文件夹中的所有文件都已成功处理。
自动合并多个 CSV 文件的功能使您能够从繁琐的手动工作过渡到专业的工作流程,无论是利用 Power Query 的灵活性进行数据清理,还是在结构不兼容或数据量超过电子表格限制时求助于 VBA。