【发布时间】: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])
)
)
【问题讨论】: