DAX中的项目收益计算

Project revenue calculation in DAX

我需要计算项目的安装 + 维护 的持续收入,并在 Power 中的 DAX 中计算用于控制目的的每月收入双.

问题如下。

项目存储在 table CONTRACTS 中,如下所示:

我还有一个单独的约会对象table INST_DATE_TABLE:

table 是通过 [INSTALLATION_DATE] 字段连接的。

每个月的收入是 [INSTALLATION_REVENUE] 的总和(如果安装是在当月进行的)加上从第一个月开始的每月维护收入,即 [MAINTENANCE_COST_PER_UNIT ]] * [MAINTENANCE_UNIT] / 12.

并且维护收入只有在当前日期超过安装日期的情况下才计算!

一些合同尚未签署,因此没有设置安装日期 (NULL)

所以 INSTALLATION REVENUE DAX 是这样的:

    .INSTALLATION_REVENUE = 
     CALCULATE (
        SUMX(CONTRACTS; 
        CONTRACTS[INSTALLATION_REVENUE] 
            );
        CONTRACTS[INSTALLATION_DATE] > 0
     )

每月的固定收入是这样的:

    .REGULAR_REVENUE = 
    CALCULATE ( 
       SUMX(CONTRACTS; 
       CONTRACTS[MAINTENANCE_COST_PER_UNIT]*CONTRACTS[MAINTENANCE_UNIT]
        ) / 12;
        CONTRACTS[INSTALLATION_DATE] > 0
     )

对于所有日期,我可以这样计算后者的现金流量:

     .REGULAR_REVENUE_ONGOING = 
      CALCULATE ( 
          [.REGULAR_REVENUE];
          ALL(INST_DATE_TABLE[INSTALLATION_DATE])
      )

这为我提供了一系列不错的所有时期的月收入。 但我只想在安装日期之后的时段看到这个!

所以假设在合同 1 上进行过滤,我现在有以下现金流量:

但对于 2019.04.01 之前的期间,我希望看到零!

我该怎么做?

我无法根据项目的安装日期过滤日期!

在我得到一份合同的预期结果后,可以很容易地对所有合同进行总结,这样

      .TOTAL_REVENUE = 
      [.INSTALLATION_REVENUE] + [.REGULAR_REVENUE_EXPECTED]

更新:

我创建了一个累计总数来显示持续收入:

   .REGULAR_REVENUE_ONGOING = 
   CALCULATE ( 
       [.REGULAR_REVENUE];
       FILTER(
           ALL(INST_DATE_TABLE[INSTALLATION_DATE]);
           INST_DATE_TABLE[INSTALLATION_DATE
             <=MAX(INST_DATE_TABLE[INSTALLATION_DATE])
           )
     )

这显示了正确的系列,但现在我遇到了另一个问题。当我尝试累加这个已经累加的数据系列时,它 并没有累加为累加数据系列

如有任何帮助,我们将不胜感激

   .REVENUE_TOTAL_CUMULATIVE = 
    CALCULATE(
       [.REVENUE_TOTAL];
       FILTER(
           INST_DATE_TABLE;
           INST_DATE_TABLE[INSTALLATION_DATE] <= MAX(INST_DATE_TABLE[INSTALLATION_DATE])
           )
    )

假设您的持续收入没有结束日期,请尝试:

.REGULAR_REVENUE_ONGOING = 
VAR DateMin = 
    CALCULATE(
        MIN ( CONTRACTS[INSTALLATION_DATE] ),
        ALL ( INST_DATE_TABLE )
    )
VAR DateMax = 
    MAX ( INST_DATE_TABLE[INSTALLATION_DATE] )
RETURN
    SUMX ( 
        FILTER ( 
            ALL ( INST_DATE_TABLE ),
            INST_DATE_TABLE[INSTALLATION_DATE] >= DateMin && INST_DATE_TABLE[INSTALLATION_DATE] <= DateMax
        ),
        [.REGULAR_REVENUE]
    )

累计总收入:

.REVENUE_TOTAL_CUMULATIVE = 
VAR DateCurrent = MAX ( INST_DATE_TABLE[INSTALLATION_DATE] )
VAR CumulativeInstallationRevenue = 
    CALCULATE ( 
        [.INSTALLATION_REVENUE],
        FILTER ( 
            ALL ( INST_DATE_TABLE ),
            INST_DATE_TABLE[INSTALLATION_DATE] <= DateCurrent
        )
    )
VAR CumulativeOngoingRevenue = 
    SUMX ( 
        FILTER ( 
            ALL ( INST_DATE_TABLE ),
            INST_DATE_TABLE[INSTALLATION_DATE] <= DateCurrent
        ),
        [.REGULAR_REVENUE_ONGOING]
    )
RETURN
    CumulativeInstallationRevenue + CumulativeOngoingRevenue

请参阅 https://pwrbi.com/so_55808659/ 以获取工作示例 PBIX 文件