You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Power BI DAX度量值实现交易金额按目标区域汇率转换?

DAX度量值实现交易金额按汇率转换方案

场景1:按交易日期匹配对应汇率(推荐,需交易表含[交易日期]字段)

度量值代码

转换后金额 = 
VAR CurrentCurrency = SELECTEDVALUE('交易表'[交易币种])
VAR CurrentRegion = SELECTEDVALUE('交易表'[目标区域])
VAR CurrentDate = SELECTEDVALUE('交易表'[交易日期])
VAR MatchRate = 
    CALCULATE(
        MAX('汇率表'[汇率]),
        '汇率表'[币种] = CurrentCurrency,
        '汇率表'[目标区域] = CurrentRegion,
        '汇率表'[日期] <= CurrentDate -- 取交易当日或之前最新的汇率,若需严格当日匹配改为=
    )
RETURN
    SUM('交易表'[金额]) * IF(ISBLANK(MatchRate), 1, MatchRate) -- 无匹配汇率时返回原金额

逻辑说明

  • SELECTEDVALUE获取当前筛选上下文下的交易币种、目标区域和交易日期
  • CALCULATE筛选出对应币种、区域,且日期不晚于交易日期的汇率,用MAX确保取唯一值(若汇率表当日仅一条记录,用SUM或MAX均可)
  • 最后将交易金额总和乘以匹配到的汇率,无匹配时保留原金额

场景2:无交易日期,取对应币种+区域的最新汇率

度量值代码

转换后金额(最新汇率) = 
VAR CurrentCurrency = SELECTEDVALUE('交易表'[交易币种])
VAR CurrentRegion = SELECTEDVALUE('交易表'[目标区域])
VAR LatestRateDate = 
    CALCULATE(
        MAX('汇率表'[日期]),
        '汇率表'[币种] = CurrentCurrency,
        '汇率表'[目标区域] = CurrentRegion
    )
VAR MatchRate = 
    CALCULATE(
        MAX('汇率表'[汇率]),
        '汇率表'[币种] = CurrentCurrency,
        '汇率表'[目标区域] = CurrentRegion,
        '汇率表'[日期] = LatestRateDate
    )
RETURN
    SUM('交易表'[金额]) * IF(ISBLANK(MatchRate), 1, MatchRate)

逻辑说明

  • 先通过MAX('汇率表'[日期])找到对应币种+区域的最新汇率日期
  • 再基于该日期筛选出对应的汇率值
  • 同样处理无匹配汇率的情况

注意事项

  • 确保汇率表中同一币种+区域+日期的汇率记录唯一,若有重复需先清理数据(比如取平均值或删除重复项)
  • DAX度量值会随报表筛选上下文动态计算,比Power Query静态合并更适配多维度分析场景
  • 可根据业务需求调整汇率匹配规则(比如是否允许无汇率时返回空值,只需把IF(ISBLANK(MatchRate),1,MatchRate)改为MatchRate)

内容的提问来源于stack exchange,提问作者tony Bruce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:22:59