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

求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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:22:07