如何让折线图中BaseExchangeRate不受日期字段影响保持恒定
问题说明
现有汇率表结构如下:
| DATE | FIRST CURRENCY | SECOND CURRENCY | EXCHANGE_RATE_VALUE |
|---|---|---|---|
| (数据行) | (货币代码) | (货币代码) | (汇率值) |
需求是绘制折线图,展示第二种货币的汇率指数变化,基准指数为100(以该货币的最早日期汇率为基准)。
原基准汇率计算DAX公式:
BaseExchangeRate = CALCULATE ( AVERAGE ( 'Currency Table'[EXCHANGE_RATE_VALUE]), FILTER('Currency Table', 'Currency Table'[DATE] = MIN('Currency Table'[DATE])) )
该公式在表格中显示正常,但在折线图中无法呈现各货币对应的恒定基准值,而是显示每个时段的实际汇率,导致无法正确计算指数。
解决方案
问题出在原公式的上下文筛选:MIN('Currency Table'[DATE])会受当前折线图的日期上下文影响,导致每个日期切片下都取当前范围内的最小日期,而非该货币全局的最早日期。
需要修改DAX公式,强制忽略当前的日期筛选,针对每种SECOND CURRENCY获取其全局最早日期的汇率:
修正后的基准汇率公式
BaseExchangeRate = VAR CurrentSecondCurrency = SELECTEDVALUE('Currency Table'[SECOND CURRENCY]) VAR MinDateForCurrency = CALCULATE( MIN('Currency Table'[DATE]), ALL('Currency Table'[DATE]), 'Currency Table'[SECOND CURRENCY] = CurrentSecondCurrency ) RETURN CALCULATE( AVERAGE('Currency Table'[EXCHANGE_RATE_VALUE]), 'Currency Table'[DATE] = MinDateForCurrency, 'Currency Table'[SECOND CURRENCY] = CurrentSecondCurrency )
汇率指数计算(可选)
得到恒定的基准汇率后,指数计算可以用以下公式:
ExchangeRateIndex = DIVIDE( 'Currency Table'[EXCHANGE_RATE_VALUE], [BaseExchangeRate], 0 ) * 100
公式说明
CurrentSecondCurrency:获取当前上下文的第二种货币,确保计算针对单个货币MinDateForCurrency:使用ALL('Currency Table'[DATE])移除日期筛选,获取该货币的全局最早日期- 最后返回该货币最早日期对应的平均汇率,确保在任何日期上下文下都保持恒定
将修正后的BaseExchangeRate或ExchangeRateIndex放入折线图,即可得到以最早日期为基准的指数变化曲线,基准值保持恒定。
内容的提问来源于stack exchange,提问作者Hemant
相关产品推荐
相关产品推荐

