不同表中两列的加权平均值

时间:2018-08-08 19:18:15

标签: dax

我有一个名为Products的表和另一个名为Sales的表。它们与ProductId相关。我需要在Products表中找到选定产品列表的加权平均值。公式是

(Product1.UnitCost * Sales[ProductId1].ItemsSold +
 Product2.UnitCost * Sales[ProductId2].ItemsSold + ...) /
(Total sum of the chosen products items sold)

如何为此编写DAX公式?

Products
			
ProductId   |	Name  |	Description   |	UnitItemCost
------------|---------|---------------|----------------
id1	    |	Name1 |	Description1  |	10
id2	    |	Name2 |	Description2  |	20
id3	    |	Name3 |	Description3  |	30
			
			
Sales	
		
ProductId  |	ItemsSold
-----------|--------------		1714.126984
Id1	   |	20		
id2	   |	30		
id1	   |	10		
id2        |    40		
id3	   |	50		
id3	   |	39		

Average unit cost = 23.12    (10*30+20*70+30*89)/189

2 个答案:

答案 0 :(得分:1)

我不确定您上面的示例中的逻辑。看来您要为每种产品取UnitCost * ItemSold,将它们加起来并除以总数ItemSold

应将((10*30)+(20*70)+(30*89)) = 4370除以189,即23.12

在这种情况下,您可以创建一个计算得出的度量,如下所示:

Average unit cost = 
--create a summary table, one row per product id, with a 'Cost * Sold' column giving you UnitItemCost * ItemSold for each product
VAR my_table =
    SUMMARIZE (
        Sales,
        Sales[ProductId],
        "Cost * Sold", MAX ( Products[UnitItemCost] ) * SUM ( Sales[ItemSold] )
    )
RETURN

--take the sum of UnitItemCost * ItemSold for each product (4370 in your example) divided by the total ItemSold (189 in your example) 
    SUMX ( my_table, [Cost * Sold] ) / SUM ( Sales[ItemSold] )

只要您的“产品”和“销售”表通过ProductId相关联,就可以使用。在用您的样本数据对我进行测试之后,我得到了23.12。

答案 1 :(得分:0)

正如罗里指出的那样,您的1714.126984值似乎与您的示例不符,但是可以使用一种相对简单的方法来计算加权平均单位成本:

Average unit cost = DIVIDE(
                        SUMX(Sales,
                            Sales[ItemsSold] * RELATED(Products[UnitItemCost])),
                        SUM(Sales[ItemsSold]))

这是商品的总和及其相关成本除以售出商品的总数。