Power BI按国家匹配汇率计算美元销售总额的DAX写法
Power BI 按国家汇总后换算美元销售额的DAX度量值写法
- 前置配置要求:提前将Table1(销售表)和Table2(汇率表)通过
COUNTRY字段建立一对多单方向关系,汇率表作为关系「一」端,销售表作为关系「多」端即可。
符合计算逻辑的度量值代码如下:
TOTALSALES_USD = SUMX ( VALUES ( Table1[COUNTRY] ), [TOTALSALES] * SELECTEDVALUE ( Table2[ToUSD Exchange rate] ) )
逻辑说明
这个写法完全匹配要求的计算规则:
- 迭代粒度为当前筛选上下文下所有产生销售的国家,不会遍历销售表明细行,从根源上避免了逐行换算的问题
- 对每一个迭代到的国家,先计算该国在当前筛选下的本币销售总额(即已有的
[TOTALSALES]度量值结果),再乘以该国对应的兑美元汇率,得到单国美元销售额 - 最后自动把所有选中国家的美元销售额求和,不管是单选国家还是多选国家,计算逻辑都保持一致:
对应示例数据验证:
- 无筛选时:CHN销售额1007 + JPN销售额100135 = 14200
- 仅筛选CHN时:100*7 = 700
- 仅筛选JPN时:100*135 = 13500
避坑提示
- 不要使用
SUMX(Table1, Table1[Sales] * RELATED(Table2[ToUSD Exchange rate]))写法,该写法是逐行销售明细换算汇率,不符合「先按国家汇总本币销售额再换算」的要求 - 若单个国家匹配到多个汇率值,
SELECTEDVALUE会返回空值,可直接定位到汇率表的数据重复问题,不会出现计算错误 - 如果你单独搭建了国家公共维度表,只需要把
VALUES(Table1[COUNTRY])替换为维度表中的COUNTRY字段即可,计算逻辑完全不变
内容的提问来源于stack exchange,提问作者mytabi
相关产品推荐
相关产品推荐

