我有一个名为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
答案 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]))
这是商品的总和及其相关成本除以售出商品的总数。