首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带组的电力查询的加权平均成本

带组的电力查询的加权平均成本
EN

Stack Overflow用户
提问于 2022-06-19 06:06:11
回答 2查看 267关注 0票数 0

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

我有以下数据表。

我需要将运行Qty列和平均成本列添加到表中。

当接受股票时,平均价格应该是(可用股票的成本+新股的成本)/总股票(Qty);发行股票时,平均价格应该是可用股票/可用股票的成本(Qty)。

是否知道如何分别计算各物料的运行质量和加权平均成本?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-19 10:15:00

正如我在你的previous similar question中提到的,你可以

  • Group by material
  • 然后对每个组

应用相同的算法

应用相同的算法,一个简单的方法是

function

  • call

  • 将前面的代码转换为Table.Group聚合节

  • 中的函数,并进行了一些更改,以说明额外的列

代码假定条目按日期顺序排列,如示例中所示。如果不是,则需要添加一些排序步骤。

源数据

函数M码

添加为空白查询

重命名fnRT_AP

代码语言:javascript
运行
复制
//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"

主代码

代码语言:javascript
运行
复制
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"

结果

票数 2
EN

Stack Overflow用户

发布于 2022-06-19 08:08:47

在询问、添加示例数据时,不需要在pictures.

  • Aggregations DAX中对行执行
  1. PowerQuery
  2. You可以使用快速度量计算运行总计来创建运行中的Qty列,使用Qty作为基值,使用Date作为字段

您将得到的度量如下所示:

代码语言:javascript
运行
复制
Qty running total in Date = 
CALCULATE(
    SUM('Stock'[Qty]),
    FILTER(
        ALLSELECTED('Stock'[Date]),
        ISONORAFTER('Stock'[Date], MAX('Stock'[Date]), DESC)
    )
)

请注意,在可视化中,您必须按日期(例如X轴或表的第一列)过滤此度量值以接收所需的数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72674615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档