DAX - 迭代现值计算

问题描述 投票:0回答:1

我有一个NPV计算,我手动完成,因为XNPV功能似乎不起作用。

我创建的NPV指标看起来像这样:

'Data'[Undiscounted Value] / (1+'Discount Rate'[Discount Rate Value])^([Component]/12)

我发现计算中的错误位于度量的[Component]部分。 [组件]计算如下:

IF(TODAY() > LASTDATE('Data'[Date]), BLANK(),
DATEDIFF(TODAY(), LASTDATE('Data'[Date]), MONTH))

[组件]计算旨在确定NPV计算的月数。我除以12因为我有年折扣率,但我的数据是几个月。

上述计算在线/条形图中完美运行。我已经对这几个月进行了测试,以确认这些值是否正确打折。

当我尝试聚合数据时发生问题。换句话说,它在折线图中工作正常,但是当我将计算放在卡片上时,它会使用组件的LASTDATE并使用所有未折现值的总和执行计算。换句话说,它做了这样的事情:

 SUM ('Data'[Undiscounted Value] ) / (1+'Discount Rate'[Discount Rate Value])^(MAX(Component) /12)

然后吐出一个不正确的结果。

它应该做的只是取所有贴现值的总和。因此,逐月运行计算然后添加所有月份,而是添加未安装的值,然后在36个月内对其进行折扣。

我的QUESTion是:是否有一个替代函数可以告诉Power BI不要使用最后日期,而是迭代每个月(行)然后SUM

powerbi dax
1个回答
0
投票

我会建议以下解决方案结构:

  SUMX( 
      VALUES( 'Data'[Month] )
      , CALCULATE( NPV )
      )

这将在总结之前计算每个月的折扣。您可能还需要调整[Component]公式。

© www.soinside.com 2019 - 2024. All rights reserved.