【问题标题】:Project revenue calculation in DAXDAX 中的项目收入计算
【发布时间】:2019-04-23 09:58:13
【问题描述】:

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

问题如下。

项目存储在一个表 CONTRACTS 中,如下所示:

我有一个单独的日期表 INST_DATE_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])
           )
    )

【问题讨论】:

    标签: powerbi dax financial


    【解决方案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
    

    请参阅 https://pwrbi.com/so_55808659/ 了解工作示例 PBIX 文件

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多