Power BI自动识别年度文件夹并合并数据的高效方法问询
核心思路
通过Power Query的文件夹遍历与筛选能力,自动识别Control目录下所有4位数字命名的年份文件夹,批量加载对应路径下的Excel文件,最后合并所有数据,无需手动逐个指定年份。
实现步骤与代码示例
- 定义基础路径参数(可选,方便多资产复用)
把资产的基础SharePoint路径设为参数,后续切换资产只需修改参数值:
let // 替换为你的资产Control文件夹的SharePoint站点相对路径或完整URL basePath = "https://your-sharepoint-site/sites/Projects/3.%20Assets/Type%20A/Asset%20Name/Control",
- 获取并筛选年份文件夹
获取Control目录下的所有子文件夹,筛选出名称为4位数字(年份格式)的文件夹:
// 获取Control文件夹下的所有内容 controlFolderContents = SharePoint.Files(basePath, [ApiVersion = 15]), // 筛选出文件夹类型,且名称为4位数字(年份) yearFolders = Table.SelectRows(controlFolderContents, each [IsFolder] = true and Text.Length([Name]) = 4 and Value.Is(Value.FromText([Name]), Int64.Type))
- 批量加载每个年份下的Excel数据
对每个年份文件夹,拼接目标Excel文件的完整路径,加载数据:
// 为每个年份文件夹添加Excel文件的完整路径 addExcelPath = Table.AddColumn(yearFolders, "ExcelFilePath", each [Folder Path] & [Name] & "/Data/Dataset/excel.xlsx"), // 加载每个Excel文件的数据(此处假设Excel只有一个工作表,如需指定工作表可修改Excel.Workbook参数) loadExcelData = Table.AddColumn(addExcelPath, "ExcelData", each Excel.Workbook(File.Contents([ExcelFilePath])){[Item="Sheet1",Kind="Sheet"]}[Data]),
- 合并所有数据表
提取所有加载的数据表并合并:
// 提取所有Excel数据表并合并 combinedData = Table.Combine(loadExcelData[ExcelData]) in combinedData
注意事项
- 确保
SharePoint.Files的ApiVersion与你的SharePoint版本匹配(15对应2013/2016,16对应Online)。 - 如果Excel文件有多个工作表,可修改
Excel.Workbook后的筛选逻辑,比如指定工作表名称或索引。 - 多资产场景下,可将
basePath设为查询参数,通过参数面板快速切换不同资产的路径,无需重复修改代码。
内容的提问来源于stack exchange,提问作者Matheus Assumpção Solinho
相关产品推荐
相关产品推荐

