Power Query M - 用于滚动28天销售的自定义列

问题描述 投票:0回答:2

我正在寻找一些Power Query帮助。我有超过一年的40k产品的大量销售数据。对于每天的每个产品,我需要添加28天的销售列。

我基本上想要像下面这样的总和,但在M.

= SUMIFS([SALES],[产品代码],[本产品代码],[日期],<= [此日期],[日期],> = [此日期] -28))

powerquery m
2个回答
0
投票

添加具有日期逻辑的自定义列(基于样本sumif公式),过滤新列以获取相关行,然后按产品代码分组并将Sales总和。假设源数据在Table1中有三列(Sales,Product Code,Date),代码就是

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Sales", Int64.Type}, {"Product Code", type text}, {"Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "AddMe", each if [Date]<=DateTime.Date(DateTime.LocalNow()) and [Date]>=Date.AddDays(DateTime.Date(DateTime.LocalNow()),-28) then 1 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([AddMe] = 1)),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Product Code"}, {{"ProductSales", each List.Sum([Sales]), type number}})
in  #"Grouped Rows"

0
投票

试试这个,它应该工作,但可能会爬行

 let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
 #"Changed Type" = Table.TransformColumnTypes(Source,{{"Sales", Int64.Type}, {"Product Code", type text}, {"Date", type date}}),
 TotalAmountAdded = Table.AddColumn(Source, "Total Amount", (i) => List.Sum(Table.SelectRows(Source, each ([Product Code] = i[Product Code]  and [Date]<=i[Date] and [Date]>=Date.AddDays(i[Date],-28)))[Sales]), type number    )
 in TotalAmountAdded
© www.soinside.com 2019 - 2024. All rights reserved.