PowerQuery:添加多个列

4

简要介绍。

最近的任务: 添加15列并赋相同的值。

解决方法: 我使用以下方法代替连续使用Table.AddColumn。

= Table.RemoveColumns(
    Table.SplitColumn(
        Table.AddColumn(TableFromPreviousStep, "q", each "1")
        , "q"
        , Splitter.SplitTextByDelimiter(" ")
    , {"temp","q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10", "q11", "q12", "qY+1", "qY+2", "qY+3"} 
    , 1)
, {"temp"})
说明:首先我在表中添加一个名为“q”的临时列,其中包含任何默认文本值。然后使用空格作为分隔符拆分此列(这就是为什么需要文本),但由于没有空格,因此返回与名称数量相同的列数。第一列保留原始值,并应在稍后的步骤中删除。所有其他新列的默认值均为1。

问题:我的当前任务是创建几个具有相同公式计算的值的列。我尝试与上面相同的方法,但未能将任何公式用作默认值。我得到的最好结果是生成包含公式的列。

谢谢你的帮助。

1个回答

7
您可以使用List.Accumulate向表中添加任意数量的列。如果您有一个名为Source,其中包含列q的表格,您可以使用以下公式创建具有相同值的15列: List.Accumulate({1..15}, Source, (state, current) => Table.AddColumn(state, "q" & Number.ToText(current), each [q])) Accumulate将循环遍历列表中的每个数字,并使用Table.AddColumn向正在构建的表格中添加一个“qnumber”列。这对于任何值和任何行数都适用。

谢谢,Alejandro!我的理解是,公式(例如示例中的每个[q])对于所有新列都是相同的? - Eugene
我该如何将整个列表转换为文本(我想将其与另一个具有非数字列名的列表合并)? - Eugene
[q] 是该列中的值,因此每行中的每一列都将具有相同的值,但行之间的值可能不同。要将列表转换为文本,您是要使列表中的每个值成为文本值,还是要将列表表示为文本值?如果是前者,请使用 Text.From - Alejandro Lopez-Lago - MSFT
谢谢你,Alejandro!这正是我在寻找的。 - Eugene
1
我对“q”部分有些困惑,因为在我的情况下我需要空值。基于 Alejandro 的回答,如果您想要添加 15 个具有 null 值的用户定义列,则此公式将起作用: Add_Multiple_Columns=List.Accumulate({1..5}, Source, (state, current) => Table.AddColumn(state, "UserDefined" & Number.ToText(current), each null)) - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接