电源查询;计算何时缺少数字顺序的某个值并创建一个额外的行

Power Query; Calculating when a certain value in numerical order is missing and creating an additional row

我每周生成一份报告,确定我公司本周和未来几周对零件的需求。我生成的报告从客户文件加载数据,我使用 Power Query 下载、转换并加载到我的报告中。该报告显示当年的周数和该周的需求。我面临的问题是客户报告跳过一周(第 26 周)并直接进入第 27 周(查看附图)。

我可以在 Power Query 中采取什么步骤来计算何时缺少周数,并为该周数创建一个额外的行,并用“0”填充“所需数量”字段,同时保持“手头当前余额”字段相同和上周一样。

我附上了从 PQ 生成的 table 和编辑器中的 PQ table 的图像。

可能有帮助。我从类似于您的屏幕截图的 table 开始:

然后我将它作为 Table1 引入 Power Query:

然后我添加了一个索引列,从 1 开始:

然后我添加了一个自定义列来确定是否跳过了一周。为此,它使用索引列和周数列。 (尝试以其他方式处理到达最后一条记录时发生的错误。):

然后我过滤了自定义列以仅显示具有 "No" 的行:

然后,为了添加缺失的周数记录,我点击了功能按钮......并在功能栏区域输入= Table.TransformColumns(Custom1, {{"Qty Required", each 0},{"Requirement Date", each 0}, {"WeekNumber", each _ + 1}})并按下回车键。我还将 Applied Step 的名称从 Custom1 更改为 Transform Table(在 Power Query window 的右侧):

然后我单击“主页”>“追加查询”,然后在下拉列表中选择 Table1,然后单击“确定”。

然后我在功能栏区把#"Transform Table"的第二个实例改成了#"Added Custom",然后回车。这会将先前缺失的周的新记录附加到先前已存在的记录中,这些记录存在于 #"Added Custom" Applied Step(基本上也是先前的 table 状态)以构成完整集:

然后我按周数排序:

然后我删除了索引和自定义列:

这是我的 M 代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type datetime}, {"Part Number", Int64.Type}, {"Part Description", type text}, {"Current Balance On Hand", Int64.Type}, {"Qty Required", Int64.Type}, {"Requirement Date", type datetime}, {"WeekNumber", Int64.Type}, {"Year", Int64.Type}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each try if  #"Added Index"{[Index]-1}[WeekNumber]+1 = #"Added Index"{[Index]}[WeekNumber] then "Yes" else "No" otherwise "Yes"),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "No")),
#"Transform Table" = Table.TransformColumns(#"Filtered Rows", {{"Qty Required", each 0},{"Requirement Date", each 0}, {"WeekNumber", each _ + 1}}),
#"Appended Query" = Table.Combine({#"Transform Table", #"Added Custom"}),
#"Sorted Rows" = Table.Sort(#"Appended Query",{{"WeekNumber", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index", "Custom"})
in
#"Removed Columns"