DAX计算指定时间段流失患者数结果错误,求正确表达式
正确DAX表达式实现指定时间段流失患者统计
原代码问题分析
你提供的DAX逻辑完全偏离需求:它筛选了All Dates表中当前筛选时间段往前推2年的日期区间,然后统计该区间内有就诊记录的患者ID,这本质是在统计2年前有就诊的患者数量,和“当前时间段内的流失患者”定义完全不符。
正确DAX表达式
根据“2年未就诊即为流失患者”的定义,我们需要统计在指定时间段内无就诊记录,且最后一次就诊日期早于该时间段结束日往前推2年的患者数量,以下是实现代码:
流失患者数量 = VAR 当前时间段结束日 = MAX('All Dates'[Date]) VAR 两年前日期 = 当前时间段结束日 - 730 VAR 当前时间段开始日 = MIN('All Dates'[Date]) RETURN CALCULATE( DISTINCTCOUNT(vw_VisitsDentist[PracticeIDPatientID]), FILTER( VALUES(vw_VisitsDentist[PracticeIDPatientID]), // 条件1:患者最后一次就诊日期早于两年前 CALCULATE(MAX(vw_VisitsDentist[VisitDate])) <= 两年前日期 // 条件2:当前时间段内无任何就诊记录 && CALCULATE(COUNT(vw_VisitsDentist[VisitDate]), vw_VisitsDentist[VisitDate] >= 当前时间段开始日 && vw_VisitsDentist[VisitDate] <= 当前时间段结束日) = 0 ), ALL('All Dates') )
代码逻辑说明
- 变量定义:先获取当前筛选时间段的起止日期,以及结束日往前推2年的日期节点。
- 患者筛选:
- 对每个患者,计算其最后一次就诊日期,判断是否早于两年前的节点;
- 同时检查该患者在当前筛选时间段内是否没有任何就诊记录;
- 统计数量:用
DISTINCTCOUNT统计同时满足两个条件的唯一患者ID数量。
内容的提问来源于stack exchange,提问作者RachelPillsbury
相关产品推荐
相关产品推荐

