gpt4 book ai didi

mysql - Power Query 中的循环计算

转载 作者:行者123 更新时间:2023-11-29 19:26:27 25 4
gpt4 key购买 nike

我正在尝试将一个表中的多个列合并到另一个表的列中。主表中的每一列都包含文本,而 PrimaryAnalysis 表包含文本的索引。我想为主表创建索引列,但我必须为每个表一次创建一个索引列,因此:

#"Merged Queries" = Table.NestedJoin(#"Changed Type2",{"Text.1"},PrimaryAnalysis,{"Letter"},"NewColumn"),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Index"}, {"Index"}),
#"Renamed Columns2" = Table.RenameColumns(#"Expanded NewColumn",{{"Index", "First"}}),
#"Merged Queries1" = Table.NestedJoin(#"Renamed Columns2",{"Text.2"},PrimaryAnalysis,{"Letter"},"NewColumn"),
#"Expanded NewColumn1" = Table.ExpandTableColumn(#"Merged Queries1", "NewColumn", {"Index"}, {"Index"}),
#"Renamed Columns3" = Table.RenameColumns(#"Expanded NewColumn1",{{"Index", "2nd"}}),
#"Merged Queries2" = Table.NestedJoin(#"Renamed Columns3",{"Text.3"},PrimaryAnalysis,{"Letter"},"NewColumn"),
#"Expanded NewColumn2" = Table.ExpandTableColumn(#"Merged Queries2", "NewColumn", {"Index"}, {"Index"}),
#"Renamed Columns4" = Table.RenameColumns(#"Expanded NewColumn2",{{"Index", "3rd"}}),

现在我必须对 23 列执行此操作。有没有办法在 Power Query 中实现 DO...Repeat 或任何其他循环来执行此任务?

提前致谢。

最佳答案

在 Power Query 中循环的一种方法是使用递归函数。在下面的代码中,我读取了一个 Excel 文件,其中的表格应与您的主表格类似(因此下面代码中的步骤#“Changed Type2”应类似于您的步骤#“Changed Type2”)。

接下来定义了一个函数 AddIndices,其中在每次迭代中添加 1 个带有索引的列。 23 次迭代后,函数停止,否则调用自身。

此类递归函数的一个重要注意点是它必须包含 Table.Buffer (请参阅步骤“扩展”),否则在每次迭代中,代码都会尝试再次评估所有先前的迭代并陷入困境。 Table.Buffer 可以防止这种情况发生。

在查询的最后一步,调用该函数。

let
Source = Excel.Workbook(File.Contents("C:\Users\Marcel\Documents\Forum bijdragen\StackOverflow Power Query\Loop Computation in Power Query.xlsx"), null, true),
Tabel1_Table = Source{[Item="Tabel1",Kind="Table"]}[Data],
#"Changed Type2" = Table.TransformColumnTypes(Tabel1_Table,{{"Text.1", type text}, {"Text.2", type text}, {"Text.3", type text}, {"Text.4", type text}, {"Text.5", type text}, {"Text.6", type text}, {"Text.7", type text}, {"Text.8", type text}, {"Text.9", type text}, {"Text.10", type text}, {"Text.11", type text}, {"Text.12", type text}, {"Text.13", type text}, {"Text.14", type text}, {"Text.15", type text}, {"Text.16", type text}, {"Text.17", type text}, {"Text.18", type text}, {"Text.19", type text}, {"Text.20", type text}, {"Text.21", type text}, {"Text.22", type text}, {"Text.23", type text}}),

// Recursive function:
AddIndices = (TableSoFar as table, optional Iteration as number) as table =>
let
CurrentIteration = if Iteration = null then 1 else Iteration,
CurrentColumn = "Text."&Text.From(CurrentIteration),
NewIndexColumn = "Index."&Text.From(CurrentIteration),
MergedTable = Table.NestedJoin(TableSoFar,{CurrentColumn},PrimaryAnalysis,{"Letter"},"NewColumn"),
Expanded = Table.Buffer(Table.ExpandTableColumn(MergedTable, "NewColumn", {"Index"}, {NewIndexColumn})),
Result = if CurrentIteration = 23 then Expanded else @AddIndices(Expanded, CurrentIteration + 1)
in
Result,

// Call recursive function:
AddedIndices = AddIndices(#"Changed Type2")
in
AddedIndices

关于mysql - Power Query 中的循环计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com