在 Power BI 中合并来自多个工作簿的 excel 个工作表
Combine excel sheets from multiple workbooks in Power BI
我的要求是,我需要使用 Power BI 合并来自多个工作簿的 excel sheet。
文件夹结构是这样的 Jan, Feb, Mar, April 是文件夹名称,其中包括工作簿名称 Jan1, Jan12, Jan15, Feb1, Feb12 等,类型 1、类型 2 和类型 3 是每个工作簿中的 sheet 名称。
我想合并 Jan、Feb、Mar 文件夹中的所有类型 1 sheet,我需要编写一个 M 函数来为所有其他类型(即类型 2 和类型 3)重复该过程。
能否使用 Power Query 帮助我解决此要求?
到目前为止,我尝试创建一个函数来从文件夹中获取数据,然后我执行手动步骤以合并工作簿中的数据。
(filepath)=>
let
Source = Folder.Files(filepath),
#"Filtered Rows1" = Table.SelectRows(Source, each not Text.StartsWith([Name], "~$")),
#"Filtered Hidden Files1" = Table.SelectRows(#"Filtered Rows1", each [Attributes]?[Hidden]? <> true),
#"Reordered Columns" = Table.ReorderColumns(#"Filtered Hidden Files1",{"Name", "Content", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "Source Type"}),
#"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "Source Type"})
in
#"Removed Columns"
好吧,通过 Get and transform
> From file
> From a folder
获得你想要的东西非常简单。
在此过程中,您将指定您想要 sheet "type 1",在向导结束时为您提供:
然后,您只需对类型 2 和类型 3 重复此操作即可。
编辑:如果出于某种原因您不想使用 'From a folder' 向导,这个全部在一个查询中就可以完成工作:
let
Source = Folder.Files("C:\temp"),
#"Filtered Hidden Files" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Added Workbook" = Table.AddColumn(#"Filtered Hidden Files", "Workbook", each Excel.Workbook([Content], null, true)),
#"Added Sheet" = Table.AddColumn(#"Added Workbook", "Sheet", each Table.PromoteHeaders( [Workbook]{[Item="type 1",Kind="Sheet"]}[Data] , [PromoteAllScalars=true]) ),
#"Renamed Columns" = Table.RenameColumns(#"Added Sheet",{{"Name", "Source"}}),
#"Removed Other Columns" = Table.SelectColumns(#"Renamed Columns",{"Source", "Sheet"}),
#"Expanded Tables" = Table.ExpandTableColumn( #"Removed Other Columns" , "Sheet", Table.ColumnNames( #"Removed Other Columns"[Sheet]{0} ) )
in
#"Expanded Tables"
只需调整源文件夹,然后复制此查询并将 type 1
替换为 type 2
或 type 3
以将另外两个组合 sheet。
我的要求是,我需要使用 Power BI 合并来自多个工作簿的 excel sheet。
文件夹结构是这样的 Jan, Feb, Mar, April 是文件夹名称,其中包括工作簿名称 Jan1, Jan12, Jan15, Feb1, Feb12 等,类型 1、类型 2 和类型 3 是每个工作簿中的 sheet 名称。
我想合并 Jan、Feb、Mar 文件夹中的所有类型 1 sheet,我需要编写一个 M 函数来为所有其他类型(即类型 2 和类型 3)重复该过程。
能否使用 Power Query 帮助我解决此要求?
到目前为止,我尝试创建一个函数来从文件夹中获取数据,然后我执行手动步骤以合并工作簿中的数据。
(filepath)=>
let
Source = Folder.Files(filepath),
#"Filtered Rows1" = Table.SelectRows(Source, each not Text.StartsWith([Name], "~$")),
#"Filtered Hidden Files1" = Table.SelectRows(#"Filtered Rows1", each [Attributes]?[Hidden]? <> true),
#"Reordered Columns" = Table.ReorderColumns(#"Filtered Hidden Files1",{"Name", "Content", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "Source Type"}),
#"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "Source Type"})
in
#"Removed Columns"
好吧,通过 Get and transform
> From file
> From a folder
获得你想要的东西非常简单。
在此过程中,您将指定您想要 sheet "type 1",在向导结束时为您提供:
然后,您只需对类型 2 和类型 3 重复此操作即可。
编辑:如果出于某种原因您不想使用 'From a folder' 向导,这个全部在一个查询中就可以完成工作:
let
Source = Folder.Files("C:\temp"),
#"Filtered Hidden Files" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Added Workbook" = Table.AddColumn(#"Filtered Hidden Files", "Workbook", each Excel.Workbook([Content], null, true)),
#"Added Sheet" = Table.AddColumn(#"Added Workbook", "Sheet", each Table.PromoteHeaders( [Workbook]{[Item="type 1",Kind="Sheet"]}[Data] , [PromoteAllScalars=true]) ),
#"Renamed Columns" = Table.RenameColumns(#"Added Sheet",{{"Name", "Source"}}),
#"Removed Other Columns" = Table.SelectColumns(#"Renamed Columns",{"Source", "Sheet"}),
#"Expanded Tables" = Table.ExpandTableColumn( #"Removed Other Columns" , "Sheet", Table.ColumnNames( #"Removed Other Columns"[Sheet]{0} ) )
in
#"Expanded Tables"
只需调整源文件夹,然后复制此查询并将 type 1
替换为 type 2
或 type 3
以将另外两个组合 sheet。