我每周都会生成一份报告,以识别公司在当前一周和未来几周对零件的需求。我生成的报告从客户文件加载数据,然后使用Power Query将其下载,转换并加载到报告中。该报告显示了该年的第几周以及该周的需求。我面临的问题是客户报告跳过了一周(第26周),而直接跳到了27(查看所附图片)。
我可以在Power Query中采取哪些步骤来计算何时缺少星期数,并为该星期数创建一个额外的行,并在“所需数量”字段中填充“ 0”,同时保持“当前余额”字段与前一周。
我已经附加了从PQ生成的表图像和在编辑器中的PQ表的图像。
答案 0 :(得分:1)
然后,我添加了一个“自定义”列,以确定是否已跳过一周。它为此使用索引列和周数列。 (否则,try会处理到达最后一条记录时发生的错误。):
然后,要添加缺少的几周的记录,我单击了功能按钮... ...,然后键入= Table.TransformColumns(Custom1, {{"Qty Required", each 0},{"Requirement Date", each 0}, {"WeekNumber", each _ + 1}})
,然后在功能栏区域中按Enter。我还将“应用步骤”的名称从Custom1更改为Transform Table(在Power Query窗口的右侧):
然后,单击“主页”>“追加查询”,然后从下拉列表中选择“表1”,然后单击“确定”。
然后,在功能栏区域将#“ Transform Table”的第二个实例更改为#“ Added Custom”,然后按Enter。这会将先前丢失的几周的新记录与先前已经存在的记录相附加,这些记录已存在于#“添加的自定义”应用步骤(基本上也是先前的表状态)中,以构成完整的记录:
这是我的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"