Powerbi DAX中的项目收益计算

Powerbi DAX中的项目收益计算,powerbi,dax,financial,Powerbi,Dax,Financial,我需要计算项目安装+维护的持续收入,并在Power BI的DAX中计算用于控制目的的每月收入 问题如下 项目存储在一个表中,如下所示: .INSTALLATION_REVENUE = CALCULATE ( SUMX(CONTRACTS; CONTRACTS[INSTALLATION_REVENUE] ); CONTRACTS[INSTALLATION_DATE] > 0 )

我需要计算项目安装+维护的持续收入,并在Power BI的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])
      )

我有一个单独的日期表INST_date_表:

这些表通过[INSTALLATION_DATE]字段连接

对于每个月,如果安装是在该月进行的,则收入是[安装收入]的总和,加上从第一个月开始的每月维护收入,该月维护收入为[每单元维护成本]*[维护单元]/12

只有当当前日期超过安装日期时,才应计算维护收入

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

因此,安装收入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])
      )
每月的固定收入是这样的:

    .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])
      )
对于所有日期,我可以如下计算后者的现金流:

    .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])
           )
     )
。定期收入持续=
计算(
[.经常收入];
滤器(
全部(安装日期表[安装日期]);
安装日期表[安装日期]

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

.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]
    )
。定期收入持续=
VAR DateMin=
算计(
最小值(合同【安装日期】,
全部(安装日期表)
)
VAR DateMax=
最大值(安装日期表[安装日期])
回来
SUMX(
过滤器(
所有(安装日期表),
安装日期表[安装日期]>=日期最小和安装日期表[安装日期]