我刚开始使用power查询,我试图计算每个材料的运行质量和加权平均成本。
我有以下数据表。

我需要将运行Qty列和平均成本列添加到表中。
当接受股票时,平均价格应该是(可用股票的成本+新股的成本)/总股票(Qty);发行股票时,平均价格应该是可用股票/可用股票的成本(Qty)。
是否知道如何分别计算各物料的运行质量和加权平均成本?
谢谢。
发布于 2022-06-19 10:15:00
正如我在你的previous similar question中提到的,你可以
应用相同的算法
要应用相同的算法,一个简单的方法是
function
Table.Group聚合节
代码假定条目按日期顺序排列,如示例中所示。如果不是,则需要添加一些排序步骤。
源数据

函数M码
添加为空白查询
重命名fnRT_AP
//rename fnRT_AP
(tbl as table)=>
let
    #"Add Running Total Column" = 
        Table.FromColumns(
            Table.ToColumns(tbl) &
            {List.Generate(
                ()=>[rt=tbl[Qty]{0}, idx=0],
                each [idx] < Table.RowCount(tbl),
                each [rt = [rt] + tbl[Qty]{[idx]+1}, idx=[idx]+1],
                each [rt])},
            type table[Date=date, Material=text, Type=text, In Price=Currency.Type, Qty=Int64.Type, Running Total=Int64.Type]),
    #"Add Avg Cost Column" = 
        Table.FromColumns(
            Table.ToColumns(#"Add Running Total Column") & 
            {List.Generate(
                ()=>[cst=if #"Add Running Total Column"[Type]{0}="In" then #"Add Running Total Column"[In Price]{0} else null, idx=0],
                each [idx] < Table.RowCount(#"Add Running Total Column"),
                each [cst=if #"Add Running Total Column"[Type]{[idx]+1}="Out" then [cst]
                    else ((if [cst]=null then 0 else [cst]) * #"Add Running Total Column"[Running Total]{[idx]} + 
                        #"Add Running Total Column"[In Price]{[idx]+1} * #"Add Running Total Column"[Qty]{[idx]+1})
                        / #"Add Running Total Column"[Running Total]{[idx]+1} , idx=[idx]+1],
                each [cst])},
        type table[Date=date, Material=text, Type=text, In Price=Currency.Type, Qty=Int64.Type, Running Total=Int64.Type, Avg Cost=Currency.Type])        
in
    #"Add Avg Cost Column"主代码
let
//Change next line to reflect your actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table11"]}[Content],
    
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Material", type text}, {"Type", type text}, 
        {"In Price", Currency.Type}, {"Qty", Int64.Type}}),
    #"Capitalized Each Word" = Table.TransformColumns(#"Changed Type",{{"Type", Text.Proper, type text}}),
    #"Grouped Rows" = Table.Group(#"Capitalized Each Word", {"Material"}, {
        {"rtap", each fnRT_AP(_), 
            type table[Date=date, Material=text, Type=text, In Price=Currency.Type, Qty=Int64.Type, Running Total=Int64.Type, Avg Cost=Currency.Type]}
        }),
    #"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Material"}),
    #"Expanded rtap" = Table.ExpandTableColumn(#"Removed Columns", "rtap", {"Date", "Material", "Type", "In Price", "Qty", "Running Total", "Avg Cost"})
in
    #"Expanded rtap"结果

发布于 2022-06-19 08:08:47
在询问、添加示例数据时,不需要在pictures.
您将得到的度量如下所示:
Qty running total in Date = 
CALCULATE(
    SUM('Stock'[Qty]),
    FILTER(
        ALLSELECTED('Stock'[Date]),
        ISONORAFTER('Stock'[Date], MAX('Stock'[Date]), DESC)
    )
)请注意,在可视化中,您必须按日期(例如X轴或表的第一列)过滤此度量值以接收所需的数字。
https://stackoverflow.com/questions/72674615
复制相似问题