他们说 divide and conquer 和's what I' d在你的情况下 . 基本上,所需的第一个计算是开始日期和结束日期之间的天数 . 一旦你有两个日期之间的差异,你可以累计这些值的总和 . 让我们在DAX中实现它 .
使用以下表达式在 LogBook 表中创建名为 DaysCount 的计算列:
DaysCount :=
IF ( [Start Date] < [End Date], DATEDIFF ( [Start Date], [End Date], DAY ), 1 )
现在创建一个度量来获取累计天数:
Cumulated Logged Days :=
VAR currentVehicle =
LASTNONBLANK ( LogBook[Vehicle ID], 0 )
RETURN
CALCULATE (
SUM ( LogBook[DaysCount] ),
FILTER (
ALL ( LogBook ),
LogBook[Row ID] <= MAX ( LogBook[Row ID] )
&& currentVehicle = LogBook[Vehicle ID]
)
)
Excel 2016支持 UPDATE DATEDIFF 功能,因此如果您使用的是其他版本, DaysCount 计算列将无法正常工作
DaysCount计算列的替代方案(在Excel 2013中测试):
=IF([Start Date]
对于变量的支持也包含在DAX 2015(Excel 2016)中,因此如果您有早期版本,则必须将此表达式用于 Cumulated Logged Days 度量 .
Cumulated Logged Days :=
CALCULATE (
SUM ( LogBook[DaysCount] ),
FILTER (
ALL ( LogBook ),
COUNTROWS (
FILTER ( LogBook, EARLIER ( LogBook[Vehicle ID] ) = LogBook[Vehicle ID] )
)
&& LogBook[Row ID] <= MAX ( LogBook[Row ID] )
)
)
Excel 2013数据透视表中的最终结果 .
如果这有帮助,请告诉我 .