如何在另一个 Excel 文档中重用一组强大的查询步骤?
How to reuse a set of power query steps in another Excel document?
我们有 4GB 的 csv 文件,它是 Excel 文档中电源查询的来源。设置所有转换需要一些时间,我们希望在创建需要导入相同格式的数据模型文件的其他文档时能够重用这些步骤。
有没有办法保存查询并在另一个文档中重复使用?我已经看到一些关于从高级编辑器复制查询文本的参考资料,但似乎应该有更好的方法。
复制粘贴
在 PowerQuery 中,右键单击最终查询并 select 复制。打开一个新的 Excel 工作簿,打开 PowerQuery 并将查询粘贴到查询窗格中。所有依赖查询和参数也将被复制。然后可以调整查询步骤,保存新的工作簿。
分离数据和 PowerQuery 转换
我假设您打开了 Excel 数据文件并在其中进行了所有 PowerQuery 转换。为了将它们分开,您可以选择 Peter 的解决方案,或者制作该文件的两份副本,一份用于数据(例如“data.xlsx”)和其他用于转换(例如“PQ_transformations.xlsx”)。无论哪种方式,您都必须进行一些调整。
调整
- 从 数据文件.
中删除所有 PQ 查询
- 更改 PQ 文件。这取决于您是否要在 PowerQuery(选项 1)或不(选项 2)中更改每个数据文件的位置。
选项 1:Select PowerQuery 中的数据文件。
- 打开 PQ 编辑器
- 转到转换的第一个查询并将第一个语句(应该看起来像
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]
)替换为 = Excel.Workbook(File.Contents("[PATH]\data.xlsx"), null, true)
和 [PATH]文件位置的占位符。
- 关闭 PQ 编辑器
- 删除包含原始数据的选项卡。
选项 2:应用转换而不编辑 PowerQuery
以下设置假定您将数据文件组织在不同的文件夹中。然后,您可以将 PQ 文件 复制到每个文件夹中,打开它并单击“数据”/“全部更新”以将您的转换应用于给定文件夹中的数据文件。
备注:
我假设所有数据文件都具有相同的结构和名称。
我在 Excel 而不是在 PowerQuery 中定义文件夹,以允许不了解 PQ 的用户通过覆盖公式手动更改文件夹,以防他们不想复制文件一直。
添加一个名为“路径”的选项卡。
Select A1
并输入 Current folder
.
Select A2
并输入 =MID(CELL("filename"),1,FIND("[",CELL("filename"))-1)
。此公式在保存后立即为您提供当前文件所在的文件夹。
Select 范围 A1:A2
并通过选择“数据”功能区并从“请求和”中选择“来自 table/area”将其带入 PQ 编辑器转换数据”部分。
生成一个新查询,向您显示当前文件夹。
打开“高级编辑器”(“开始”/“高级编辑器”),将第二步的名称更改为“SetTypes”并添加额外的行。结果应该与此类似:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
SetTypes = Table.TransformColumnTypes(Source ,{{"Current folder", type text}}),
GetPathAsValue = SetTypes{0}[Current folder],
ShowFilesInPath = Folder.Files(GetPathAsValue),
FilterForDataFile = Table.SelectRows(ShowFilesInPath, each ([Name] = "Data.xlsx"))
in
FilterForDataFile
- 关闭“高级编辑器”并接受更改。
- 您应该会看到包含您的数据文件的一行。
- 单击“内容”列中的“二进制”可查看该文件中所有 table 和工作表的列表。
- Select 所需的“Sheet”或“table”,无论您通常在数据文件中包含什么。
- 将查询重命名为“GetFile”
- 转到原始转换的第一个查询并将第一个语句(应该看起来像
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]
)替换为 = GetFile
。
我们有 4GB 的 csv 文件,它是 Excel 文档中电源查询的来源。设置所有转换需要一些时间,我们希望在创建需要导入相同格式的数据模型文件的其他文档时能够重用这些步骤。
有没有办法保存查询并在另一个文档中重复使用?我已经看到一些关于从高级编辑器复制查询文本的参考资料,但似乎应该有更好的方法。
复制粘贴
在 PowerQuery 中,右键单击最终查询并 select 复制。打开一个新的 Excel 工作簿,打开 PowerQuery 并将查询粘贴到查询窗格中。所有依赖查询和参数也将被复制。然后可以调整查询步骤,保存新的工作簿。
分离数据和 PowerQuery 转换
我假设您打开了 Excel 数据文件并在其中进行了所有 PowerQuery 转换。为了将它们分开,您可以选择 Peter 的解决方案,或者制作该文件的两份副本,一份用于数据(例如“data.xlsx”)和其他用于转换(例如“PQ_transformations.xlsx”)。无论哪种方式,您都必须进行一些调整。
调整
- 从 数据文件. 中删除所有 PQ 查询
- 更改 PQ 文件。这取决于您是否要在 PowerQuery(选项 1)或不(选项 2)中更改每个数据文件的位置。
选项 1:Select PowerQuery 中的数据文件。
- 打开 PQ 编辑器
- 转到转换的第一个查询并将第一个语句(应该看起来像
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]
)替换为= Excel.Workbook(File.Contents("[PATH]\data.xlsx"), null, true)
和 [PATH]文件位置的占位符。 - 关闭 PQ 编辑器
- 删除包含原始数据的选项卡。
选项 2:应用转换而不编辑 PowerQuery
以下设置假定您将数据文件组织在不同的文件夹中。然后,您可以将 PQ 文件 复制到每个文件夹中,打开它并单击“数据”/“全部更新”以将您的转换应用于给定文件夹中的数据文件。
备注:
我假设所有数据文件都具有相同的结构和名称。
我在 Excel 而不是在 PowerQuery 中定义文件夹,以允许不了解 PQ 的用户通过覆盖公式手动更改文件夹,以防他们不想复制文件一直。
添加一个名为“路径”的选项卡。
Select
A1
并输入Current folder
.Select
A2
并输入=MID(CELL("filename"),1,FIND("[",CELL("filename"))-1)
。此公式在保存后立即为您提供当前文件所在的文件夹。Select 范围
A1:A2
并通过选择“数据”功能区并从“请求和”中选择“来自 table/area”将其带入 PQ 编辑器转换数据”部分。生成一个新查询,向您显示当前文件夹。
打开“高级编辑器”(“开始”/“高级编辑器”),将第二步的名称更改为“SetTypes”并添加额外的行。结果应该与此类似:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
SetTypes = Table.TransformColumnTypes(Source ,{{"Current folder", type text}}),
GetPathAsValue = SetTypes{0}[Current folder],
ShowFilesInPath = Folder.Files(GetPathAsValue),
FilterForDataFile = Table.SelectRows(ShowFilesInPath, each ([Name] = "Data.xlsx"))
in
FilterForDataFile
- 关闭“高级编辑器”并接受更改。
- 您应该会看到包含您的数据文件的一行。
- 单击“内容”列中的“二进制”可查看该文件中所有 table 和工作表的列表。
- Select 所需的“Sheet”或“table”,无论您通常在数据文件中包含什么。
- 将查询重命名为“GetFile”
- 转到原始转换的第一个查询并将第一个语句(应该看起来像
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]
)替换为= GetFile
。