计算minCheck与maxCheck区间内落在日期切片器筛选范围的天数
计算活动日期区间与切片器筛选范围的重叠天数
我已创建两个度量值minCheck和maxCheck,分别用于获取活动的最早开始日期和最晚结束日期。同时设有一个来自日历表的日期切片器,需求是统计minCheck与maxCheck构成的日期区间中,落在该切片器筛选范围内的天数。
示例:当切片器筛选范围为27/06/2022 - 25/06/2023时,目标活动区间为22/03/2023 - 25/06/2023,需返回重叠天数96天。
现有度量值代码
minCheck(获取活动最早开始日期)
minCheck = var minCheck = CALCULATE(MIN('Range Plan Table'[valid_from]), USERELATIONSHIP('Overview Table'[campaignStartDate], 'Range Plan Table'[range_plan_date])) RETURN minCheck
maxCheck(获取活动最晚结束日期)
maxCheck = var maxCheck = CALCULATE(MAX('Range Plan Table'[valid_to]),USERELATIONSHIP('Overview Table'[campaignStartDate], 'Range Plan Table'[range_plan_date])) RETURN maxCheck
实现重叠天数统计的度量值
可以通过以下DAX度量值直接计算两个区间的重叠天数:
OverlapDays = VAR SlicerMin = MIN('Calendar Table'[Date]) VAR SlicerMax = MAX('Calendar Table'[Date]) VAR ActivityStart = [minCheck] VAR ActivityEnd = [maxCheck] VAR OverlapStart = MAX(ActivityStart, SlicerMin) VAR OverlapEnd = MIN(ActivityEnd, SlicerMax) RETURN IF(OverlapStart > OverlapEnd, 0, DATEDIFF(OverlapStart, OverlapEnd, DAY) + 1)
代码说明
SlicerMin/SlicerMax:提取日历表切片器筛选出的日期范围首尾值OverlapStart:取活动起始日期与切片器起始日期的较大值,作为重叠区间的起点OverlapEnd:取活动结束日期与切片器结束日期的较小值,作为重叠区间的终点- 若重叠起点晚于终点则返回0(无重叠),否则用
DATEDIFF计算天数并加1(包含首尾日期)
内容的提问来源于stack exchange,提问作者jcoke
相关产品推荐
相关产品推荐

