You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:07:03