DAX技术需求:统计月度/年度及按id_book的最长连续天数
DAX 连续天数统计方案
前置条件
假设你已创建计算列IsContinuous:当当前行日期与上一行连续时返回1,否则返回0;数据模型包含Date(日期列)、id_book(书籍ID列)。
核心度量值实现
1. 月度最长连续天数
月度最长连续天数 = VAR 当前年月 = SELECTEDVALUE('表'[Date].[YearMonth]) VAR 当月数据 = FILTER(ALL('表'), '表'[Date].[YearMonth] = 当前年月) VAR 连续段分组 = ADDCOLUMNS( GROUPBY(当月数据, '表'[id_book], "连续长度", SUMX(CURRENTGROUP(), '表'[IsContinuous])), "最大连续值", [连续长度] ) RETURN MAXX(连续段分组, [最大连续值])
注:如果模型未自动生成
YearMonth层级,可替换为YEAR('表'[Date])*100 + MONTH('表'[Date])来匹配年月。
2. 整体最长连续天数
整体最长连续天数 = VAR 全量数据 = ALL('表') VAR 连续段分组 = ADDCOLUMNS( GROUPBY(全量数据, '表'[id_book], "连续长度", SUMX(CURRENTGROUP(), '表'[IsContinuous])), "最大连续值", [连续长度] ) RETURN MAXX(连续段分组, [最大连续值])
3. 特定书籍月度最长连续天数(可选需求)
以5月id_book为B为例,直接使用该度量值:
5月书籍B最长连续天数 = VAR 目标年月 = YEAR(SELECTEDVALUE('表'[Date]))*100 + 5 VAR 目标数据 = FILTER(ALL('表'), '表'[Date].[YearMonth] = 目标年月 && '表'[id_book] = "B") RETURN SUMX(目标数据, '表'[IsContinuous])
使用提示
- 替换代码中的
'表'为你实际的表名,列名也要对应调整; - 月度统计可配合月份切片器选择目标月份,度量值会自动计算对应结果;
- 若你的
IsContinuous逻辑是标记连续段的每一行,累加后即为该段的连续天数,完全适配上述代码。
内容的提问来源于stack exchange,提问作者chris_olv
相关产品推荐
相关产品推荐

