Power BI中未关联表的ProductPrice与DealerProduct计算问题
解决办法
先找关联字段
首先得确定两张表的共同匹配字段,从表结构来看应该是产品ID(比如ProductPrice里的product_id和DealerProduct里的product_id),这是精准计算的基础。
方法一:建表关系(最稳妥)
在Power BI/SSAS的数据模型视图里,把两张表的关联字段(比如product_id)拖到一起,建立一对多关系(一般ProductPrice是“一”,DealerProduct是“多”,毕竟一个产品对应多个经销商的库存)。
建完关系后,直接在DealerProduct里加计算列:
单条金额 = RELATED(ProductPrice[overall]) * DealerProduct[quantity]
要是想在ProductPrice里算该产品的总金额,就用这个:
产品总金额 = SUMX(RELATEDTABLE(DealerProduct), DealerProduct[quantity] * ProductPrice[overall])
方法二:不建关系直接用DAX计算
如果不想动数据模型,就用CALCULATE加FILTER精准匹配:
在ProductPrice里创建计算列:
产品总金额 = SUMX( FILTER(DealerProduct, DealerProduct[product_id] = ProductPrice[product_id]), DealerProduct[quantity] * ProductPrice[overall] )
在DealerProduct里创建计算列:
单条金额 = VAR 当前产品ID = DealerProduct[product_id] VAR 匹配价格 = CALCULATE(MAX(ProductPrice[overall]), ProductPrice[product_id] = 当前产品ID) RETURN 匹配价格 * DealerProduct[quantity]
踩坑提示
- 关联字段的数据类型必须完全一致(比如都是整数或都是文本),不然要么建不了关系,要么DAX匹配出错。
- 如果一个产品在
ProductPrice里有多条价格记录,得先确定取哪个(比如最新价、均价),上面用了MAX,你可以换成MIN、AVERAGE之类的。 - 检查有没有空的
product_id,这类记录会导致匹配失败,先清理掉再算。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

