我还是PowerPivot和表格模型的新手,从关系数据库转换是很辛苦的工作 .
我有两个功能支点表:日志和日历 - 它们没有链接 . 日志行具有使用[开始日期]和[结束日期]列指定的日期范围 . 我有按[车辆ID]分组的日志行,我为每个[车辆ID]组添加了一个顺序[行ID] .
日志日期范围相互重叠,我正在尝试编写一个度量,给出日期范围内不同天数的累积计数 .
日志表:
Vehicle ID Row ID Start Date End Date *Cumulated Logged Days (Expected Result)*
AAA 1 1 Jun 2016 1 June 2016 1
AAA 2 1 Jun 2016 5 June 2016 5
AAA 3 10 Jun 2016 10 June 2016 6
BBB 1 1 Jun 2016 1 June 2016 1
BBB 2 5 Jun 2016 5 June 2016 2
BBB 3 7 Jun 2016 7 June 2016 3
这是我最好的尝试......
Cumulated Logged Days:
=CALCULATE(
COUNTROWS('Calendar'),
FILTER(
ALL(Logbook),
COUNTROWS(
FILTER(
Logbook,
EARLIER(Logbook[Vehicle ID]) = [Vehicle ID]
&& EARLIER(Logbook[Row ID]) <= [Row ID]
)
)
),
FILTER(
ALL('Calendar'),
'Calendar'[Date] >= MIN(Logbook[Start Date])
&& 'Calendar'[Date] <= MAX(Logbook[End Date])
)
)
1 回答
他们说 divide and conquer 和's what I' d在你的情况下 . 基本上,所需的第一个计算是开始日期和结束日期之间的天数 . 一旦你有两个日期之间的差异,你可以累计这些值的总和 . 让我们在DAX中实现它 .
使用以下表达式在
LogBook
表中创建名为DaysCount
的计算列:现在创建一个度量来获取累计天数:
Excel 2016支持 UPDATE
DATEDIFF
功能,因此如果您使用的是其他版本,DaysCount
计算列将无法正常工作DaysCount计算列的替代方案(在Excel 2013中测试):
对于变量的支持也包含在DAX 2015(Excel 2016)中,因此如果您有早期版本,则必须将此表达式用于
Cumulated Logged Days
度量 .Excel 2013数据透视表中的最终结果 .
如果这有帮助,请告诉我 .