DAX中的项目收益计算
Project revenue calculation in DAX
我需要计算项目的安装 + 维护 的持续收入,并在 Power 中的 DAX 中计算用于控制目的的每月收入双.
问题如下。
项目存储在 table CONTRACTS 中,如下所示:
我还有一个单独的约会对象table INST_DATE_TABLE:
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])
)
)
假设您的持续收入没有结束日期,请尝试:
.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 文件
我需要计算项目的安装 + 维护 的持续收入,并在 Power 中的 DAX 中计算用于控制目的的每月收入双.
问题如下。
项目存储在 table CONTRACTS 中,如下所示:
我还有一个单独的约会对象table INST_DATE_TABLE:
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])
)
)
假设您的持续收入没有结束日期,请尝试:
.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 文件