如何在DAX中按特定日期筛选并计算指定季度活跃客户滚动12月收入
解决方案:修正DAX函数以统计最大季度活跃客户的滚动12个月收入
问题核心
原DAX函数会累加滚动12个月内任意季度活跃客户的收入,而我们需要的是仅在所选最大季度处于活跃状态的客户,在该季度往前12个月(4个季度)的总收入,同时保留ALL()来处理时间筛选逻辑。
修改后的DAX函数
Rev R12 12 = VAR _lastq = MAX('RCB Core Revenue'[Quarter Index]) VAR _firstq = _lastq - 4 // 筛选出在最大季度处于活跃状态的客户(替换Customer ID为你的客户唯一标识列) VAR _active_customers = CALCULATETABLE( VALUES('RCB Core Revenue'[Customer ID]), 'RCB Core Revenue'[Quarter Index] = _lastq, 'RCB Core Revenue'[Active vs Deconverted] = "Active" ) // 计算目标客户在滚动12个月内的总收入 VAR _res = CALCULATE( SUM('RCB Core Revenue'[Revenue]), _active_customers, // 仅保留最大季度活跃的客户 FILTER( ALL(_QuarterEndTable), '_QuarterEndTable'[Quarter Index] > _firstq && '_QuarterEndTable'[Quarter Index] <= _lastq ) ) RETURN _res
关键逻辑说明
- 锁定目标客户:通过
CALCULATETABLE精准筛选出_lastq(当前上下文最大季度)中标记为"Active"的客户列表,这是实现需求的核心前提。 - 保留时间范围独立性:
ALL(_QuarterEndTable)清除外部时间筛选的干扰,确保滚动12个月的范围始终基于所选最大季度计算,不受页面切片器或其他时间筛选条件影响。 - 关联客户与时间范围:将活跃客户列表作为筛选条件传入
CALCULATE,同时应用滚动时间范围,最终得到符合要求的收入总和。
内容的提问来源于stack exchange,提问作者Kevin Anand
相关产品推荐
相关产品推荐

