如何将值复制到 PowerBI 中特定列的下一行?

How do you duplicate a value to the next row in a specific column in PowerBI?

所以我有这份 PBI 报告,这里有这个基本列:

我决定使用带有以下代码的自定义列将此列拆分为两列:(第 3 列只是一个 int 列)

= Table.AddColumn(#"Added Conditional Column", "Column1", each if [#"Column3"] > 0 then [Base Column] else null)
= Table.AddColumn(#"Added Custom", "Column2", each if [#"Column3"] <= 0 then [Base Column] else null)

生成的第 1 列和第 2 列如下所示:

一切看起来都很好,直到我将它们绘制在折线图中,留下了一个空白:

我意识到我必须在第 1 列中插入值 279.8258333 以使其看起来已连接。

我尝试了不同的 Table.InsertRow,但我似乎无法在 table(第 2 列中第一个值的相邻单元格)中的特定单元格中找到任何内容。基本上我需要 Column1 和 2 具有 279 值。

如有任何帮助,我们将不胜感激!

M / Powerquery 中的一种方法

使用用户界面,方法 1:

添加列..索引列...

添加列..自定义列...使用列名自定义和公式

=try #"Added Index"{[Index]-1}[Column1] otherwise null

这将从 Column1 中的前一行获取值

添加列..自定义列...使用列名NewColumn1和公式

= if [Column1] = null and [Custom]<>null then [Column2] else [Column1]

右键单击并删除 Column1、索引和自定义列

单击 NewColumn1 并按 F2 并将列重命名为 Column1

完成

手动码法2

(创建偏移列的三行在较大的数据集上工作得更快,然后使用索引引用前一行)

创建一个新列,将 Column1 向下偏移一个。当第 1 列为空且新列有数字时,从 Column2

复制值
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
// offset Column1 down by a row into new column
    shiftedList = {null} & List.RemoveLastN(Source[Column1],1),
    custom1 = Table.ToColumns(Source) & {shiftedList},
    custom2 = Table.FromColumns(custom1,Table.ColumnNames(Source) & {"Previous Row"}),
#"Added Custom" = Table.AddColumn(custom2, "Custom", each if [Column1]=null and [Previous Row]<>null then [Column2] else [Column1]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column1", "Previous Row"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom", "Column1"}})
in  #"Renamed Columns"

手动码法3

(创建偏移列的三行在较大的数据集上工作得更快,然后使用索引引用前一行)

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
// offset Column1 down by a row into new column
    shiftedList = {null} & List.RemoveLastN(Source[Column1],1),
    custom1 = Table.ToColumns(Source) & {shiftedList},
    custom2 = Table.FromColumns(custom1,Table.ColumnNames(Source) & {"Previous Row"}),
 #"Replaced Value" = Table.ReplaceValue(custom2,  each [Column1],  each if [Previous Row]<>null and [Column1]=null  then [Column2] else [Column1] ,Replacer.ReplaceValue,{"Column1"}),
#"Removed Columns" = Table.RemoveColumns(#"Replaced Value",{"Previous Row"})  
in #"Removed Columns"