DAX中的项目收益计算

时间:2019-04-23 09:58:13

标签: powerbi dax financial

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

问题出在下面。

项目存储在这样的CONTRACTS表中:

enter image description here

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

enter image description here

表通过[INSTALLATION_DATE]字段连接。

enter image description here

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

仅当当前日期超出安装日期时,才应计算维护收入!

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

因此,安装收入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过滤后,我现在有以下现金流量:

enter image description here

但是对于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])
           )
    )

enter image description here

1 个答案:

答案 0 :(得分:1)

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

.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

enter image description here

有关示例PBIX文件,请参见https://pwrbi.com/so_55808659/