求Power BI中Gap/Island问题解决方案:带重置的连续标记天数统计
解决方案:用DAX生成Target Result列
步骤1:先创建辅助计算列Last_Flag0_Date
这个列用于定位每个账户当前日期之前最后一次出现Flag=0的日期;如果该账户此前从未出现Flag=0,则用账户最早日期减1,保证后续天数计算准确。
Last_Flag0_Date = VAR CurrentAccount = 'Table'[Account] VAR CurrentDate = 'Table'[Date] VAR Last0Date = CALCULATE( MAX('Table'[Date]), FILTER( ALL('Table'), 'Table'[Account] = CurrentAccount && 'Table'[Date] < CurrentDate && 'Table'[Flag] = 0 ) ) VAR AccountMinDate = CALCULATE( MIN('Table'[Date]), FILTER(ALL('Table'), 'Table'[Account] = CurrentAccount) ) RETURN IF(ISBLANK(Last0Date), AccountMinDate - 1, Last0Date)
步骤2:创建Target Result计算列
基于辅助列计算连续天数,当前Flag为1时返回天数差,Flag为0时直接重置为0。
Target Result = IF( 'Table'[Flag] = 1, DATEDIFF('Table'[Last_Flag0_Date], 'Table'[Date], DAY), 0 )
逻辑说明
- 以账户ABC为例:1/5/23之前无Flag=0记录,
Last_Flag0_Date取账户最早日期(1/3/23)减1即1/2/23,DATEDIFF计算得3天,匹配示例结果。 - 以账户DEF为例:1/5/23之前最后一次Flag=0是1/4/23,DATEDIFF计算得1天,匹配示例结果。
- 当Flag=0时直接返回0,实现计数重置的要求。
注意事项
- 确保表中
Date为日期类型,Account为文本类型,Flag为整数类型。 - 若报表存在筛选上下文,可根据场景将
ALL('Table')替换为ALLSELECTED('Table')。
内容的提问来源于stack exchange,提问作者bigjdawg43
相关产品推荐
相关产品推荐

