从具有多个文件的文件夹导入数据 (Power Query)
从具有多个文件的文件夹导入数据 (Power Query)
使用 Power Query 将存储在单个文件夹中的相同架构的多个文件合并到一个表中。 例如,每个月你希望合并来自多个部门的预算工作簿,其中列相同,但行数和值在每个工作簿中有所不同。 设置后,可以像使用任何单个导入的数据源一样应用其他转换,然后刷新数据以查看每个月的结果。
注意 本主题演示如何合并文件夹中的文件。 还可以合并 SharePoint、Azure Blob 存储 和 Azure Data Lake Storage 中存储的文件。 此过程类似。
开始之前
保持简单:
- 确保要合并的所有文件都包含在专用文件夹中,没有多余的文件。 否则,文件夹中的所有文件和你选择的任何子文件夹中都包含在要组合的数据中。
- 每个文件应具有相同的架构,具有一致的列标题、数据类型和列数。 列不必采用与列名称匹配相同的顺序。
- 如果可能,请避免对可以具有多个数据对象的数据源(例如 JSON 文件、Excel 工作簿或 Access 数据库)使用不相关的数据对象。
从文本、CSV 或 XML 文件导入
其中每个文件都遵循简单的模式,每个文件中只有一个数据表。
- 选择“数据”>从文件夹中的文件 >获取数据>。 此时会显示“浏览”对话框。
- 找到包含要合并的文件的文件夹。
- 文件夹中的文件列表显示在“<文件夹路径>”对话框中。 验证是否列出了所需的所有文件。
- 选择对话框底部的命令之一,例如“合并>合并 & 加载”。 关于所有这些命令一节中讨论了其他命令。
- 如果选择任意“合并”命令,将显示“合并文件”对话框。 若要更改文件设置,请从“示例文件”框中选择每个文件,根据需要设置“文件原点”、“分隔符”和“数据类型检测”。 还可以选中或清除对话框底部的“跳过包含错误的文件”复选框。
- 选择“确定”。
结果
Power Query自动创建查询,以将每个文件中的数据合并到工作表中。 创建的查询步骤和列取决于你选择的命令。 有关详细信息,请参阅关于所有这些查询部分。
从 JSON 导入
- 选择“数据”>从文件夹中的文件 >获取数据>。 此时会显示“浏览”对话框。
- 找到包含要合并的文件的文件夹。
- 文件夹中的文件列表显示在“<文件夹路径>”对话框中。 验证是否列出了所需的所有文件。
- 选择对话框底部的命令之一,例如“合并”>“合并 & 转换”。 关于所有这些命令一节中讨论了其他命令。
此时会显示Power Query 编辑器。
- “值”列是结构化列表列。 选择“展开
”图标,然后选择“展开到新行”。 - “值”列现在是结构化的“记录”列。 选择“展开
”图标。 此时会显示一个下拉对话框。 - 保持选中所有列。 你可能想要清除“使用原始列名作为前缀检查框。 选择“确定”。
- 选择包含数据值的所有列。 选择“开始”,即“删除列”旁边的箭头,然后选择“删除其他列”。
- 选择“开始>关闭 & 加载”。
结果
Power Query自动创建查询,以将每个文件中的数据合并到工作表中。 创建的查询步骤和列取决于你选择的命令。 有关详细信息,请参阅关于所有这些查询部分。
从 Excel 或 Access 导入
其中每个数据源可以有多个要导入的对象。 Excel 工作簿可以有多个工作表、Excel 表格或命名区域。 Access 数据库可以有多个表和查询。
选择“数据”>从文件夹中的文件 >获取数据>。 此时会显示“浏览”对话框。
找到包含要合并的文件的文件夹。
文件夹中的文件列表显示在“<文件夹路径>”对话框中。 验证是否列出了所需的所有文件。
选择对话框底部的命令之一,例如“合并>合并 & 加载”。 关于所有这些命令一节中讨论了其他命令。
在“合并文件”对话框中:
- 在“示例文件”框中,选择要用作创建查询的示例数据的文件。 不能选择对象,也可以只选择一个对象。 但是,不能选择多个。
- 如果有多个对象,请使用“搜索”框查找对象或“显示选项”以及“刷新”按钮来筛选列表。
- 选中或清除对话框底部的“跳过包含错误的文件”复选框。
- 选择“确定”。
结果
Power Query自动创建查询,以将每个文件中的数据合并到工作表中。 创建的查询步骤和列取决于你选择的命令。 有关详细信息,请参阅关于所有这些查询部分。
使用“合并文件”命令
为了提高灵活性,可以使用“合并文件”命令显式合并Power Query 编辑器中的文件。 假设源文件夹混合了文件类型和子文件夹,并且你希望以具有相同文件类型和架构的特定文件为目标,而不是其他文件。 这可以提高性能,并有助于简化转换。
- 选择“数据”>从文件夹中的文件 >获取数据>。 此时会显示“浏览”对话框。
- 找到包含要合并的文件的文件夹,然后选择“打开”。
- 文件夹和子文件夹中的所有文件的列表显示在“<文件夹路径>”对话框中。 验证是否列出了所需的所有文件。
- 选择底部的“转换数据”。 Power Query 编辑器打开并显示文件夹和任何子文件夹中的所有文件。
- 若要选择所需的文件,请筛选列,例如“扩展”或“文件夹路径”。
- 若要将文件合并到单个表中,请选择包含每个二进制(通常为第一列)的内容列,然后选择“开始”>“合并文件”。 此时将显示“合并文件”对话框。
- Power Query分析示例文件(默认为列表中的第一个文件),以使用正确的连接器并标识匹配的列。
若要将其他文件用于示例文件,请从“示例文件”下拉列表中选择它。 - (可选)在底部选择“跳过有错误的文件”,从结果中排除这些文件。
- 选择“确定”。
结果
Power Query自动创建查询,以将每个文件中的数据合并到工作表中。 创建的查询步骤和列取决于你选择的命令。 有关详细信息,请参阅关于所有这些查询部分。
关于所有这些命令
可以选择多个命令,每个命令都有不同的用途。
- 合并和转换数据 若要将所有文件与查询合并,然后启动Power Query 编辑器,请选择“合并>合并和转换数据”。
- 合并和加载 若要显示“示例文件”对话框,请创建查询,然后加载到工作表,选择“合并>合并和加载”。
- 合并并加载到 若要显示“示例文件”对话框,请创建查询,然后显示“导入”对话框,选择“合并>合并并加载到”。
- 负荷 若要创建包含一个步骤的查询,然后加载到工作表,请选择“加载>加载”。
- 加载到 若要创建包含一个步骤的查询,然后显示“导入”对话框,请选择“加载>加载到”。
- 转换数据若要通过一个步骤创建查询,然后启动Power Query 编辑器,请选择“转换数据”。
关于所有这些查询
但是,合并文件时,“查询”窗格中的“帮助程序查询”组下会创建多个支持查询。
- Power Query基于示例查询创建“示例文件”查询。
- “转换文件”函数查询使用“Parameter1”查询指定每个文件 (或二进制) 作为“示例文件”查询的输入。 此查询还会创建包含文件内容的Content列,并自动展开结构化Record列以将列数据添加到结果中。 “转换文件”和“示例文件”查询已链接,因此对“示例文件”查询的更改反映在“转换文件”查询中。
- 包含最终结果的查询位于“其他查询”组中。 默认情况下,它以导入文件的文件夹命名。
若要进一步调查,请右键单击每个查询,然后选择“编辑”以检查每个查询步骤并查看查询如何协同工作。