我有一张表格-每行都有用于表示不同类别百分比的列以及用于总计值的列,我想通过将总值乘以每个类别百分比来计算每个类别的值。
我有一个表,对于其他各列(Market Cap.Large
,Market Cap.Medium
等-除Symbol
以外的所有列),我想将其乘以{{1} }列。我可以手动执行此操作,并为每行添加一列(下面的Current Value
行),但是列数可能会增加,标题可能会更改,因此我不想为每个输入一个自定义列
是否有一个递归表达式为每个现有的列创建一个新列,并将其乘以#"Added Custom"
-我猜它会涉及为列名创建一个参数,但是我不是有关如何做的足够的知识。
Current Value
答案 0 :(得分:1)
未经测试,写在电话上,但我认为您想做的是:
创建要与List
列相乘的列Current Value
(除Symbol
,Current Value
以外的所有列)。
使用List
遍历这个新创建的List.Accumulate
,并为此在列表中的每一列添加一列(在每次循环迭代期间调用Table.AddColumn
)
因此,类似于下面的M
代码(如有必要,将下面的内容复制粘贴到Advanced Editor
上):
let
Source = #"Portfolio %",
mergedQueries = Table.NestedJoin(Source,{"Symbol"},#"Current Output Aggregated",{"Symbol"},"Current Output Aggregated",JoinKind.Inner),
expandedNested = Table.ExpandTableColumn(mergedQueries, "Current Output Aggregated", {"Current Value"}, {"Current Value"}),
allHeaders = Table.ColumnNames(expandedNested),
headersToLoopOver = List.RemoveItems(allHeaders, {"Symbol", "Current Value"})
loopOverList = List.Accumulate(headersToLoopOver, expandedNested, (tableState, currentColumn) =>
Table.AddColumn(tableState, currentColumn & " Value", each Record.Field(_, currentColumn) * [Current Value], type number)
)
in
loopOverList
我不确定Record.Field
是否正确(在循环中)并且我无权访问要测试的机器,但是应该很容易检查输出是否是您所需要的期待。