powerbi - 在 Power BI 中合并来自多个工作簿的 Excel 工作表
问题描述
我的要求是,我需要使用 Power BI 组合来自多个工作簿的 Excel 工作表。
文件夹结构是这样的 Jan、Feb、Mar、April 是文件夹名称,其中包括工作簿名称 Jan1、Jan12、Jan15、Feb1、Feb12 等,其中 type 1、type 2 和 type 3 是每个中的工作表名称工作簿。
我想合并 Jan、Feb、Mar 文件夹中的所有类型 1 表,我需要编写一个 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
在此过程中,您将指定您想要的工作表“类型 1”,在向导结束时为您提供:
然后,您只需对类型 2 和 3 重复此操作。
编辑:如果由于某种原因您不想使用“从文件夹”向导,那么这一切都在一个查询中完成:
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
ortype 3
以拥有其他两个组合表。
推荐阅读
- c++ - gcc:从静态库中的模板静态成员编译的弱符号在链接期间似乎丢失了
- c - 关于在 c 中的函数内传递 const 的问题
- javascript - 隐藏事件中的元素
- laravel - 我收到错误,传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定整数,调用
- javascript - 在 react-native 中下载 "Content-Disposition": "attachment; filename=example.mp3"
- smtp - PHPMailer SMTP 端口 25 连接问题(10060)但通过 Outlook 的相同连接成功
- listview - 自定义导航栏项目在 SwiftUI 的列表详细信息视图中处于非活动状态/不起作用
- python - .get_rect() 和 .move IN pygame
- download - unindent 不匹配任何外部缩进级别 pytube
- vim - 在verilog中按数字顺序对case语句进行排序