我需要计算项目安装 + 维护的持续收入,并计算Power BI中DAX中用于控制目的的每月收入。
问题出在下面。
项目存储在这样的CONTRACTS表中:
我有一个单独的日期表INST_DATE_TABLE:
表通过[INSTALLATION_DATE]字段连接。
如果安装是在当月进行的,则每月的收入是[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过滤后,我现在有以下现金流量:
但是对于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])
)
)
答案 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
有关示例PBIX文件,请参见https://pwrbi.com/so_55808659/