Power BI中如何按连续序列生成A/B类别的数值范围表?
Power BI 拆分连续error序列的解决方案
核心思路是先给每个连续相同error值的序列分配唯一组ID,再基于组ID实现聚合拆分,全程用DAX完成,无需Python。
需求1:按连续A/B序列输出MIN和MAX seq num
步骤1:添加组ID计算列
在原表中新建计算列GroupID,用于标记每个连续序列:
GroupID = VAR 当前error = '你的表名'[error] VAR 上一行error = CALCULATE( MAX('你的表名'[error]), FILTER( '你的表名', '你的表名'[seq num] = EARLIER('你的表名'[seq num]) - 1 ) ) VAR 是否新组 = IF(当前error <> 上一行error || ISBLANK(上一行error), 1, 0) RETURN SUMX( FILTER('你的表名', '你的表名'[seq num] <= EARLIER('你的表名'[seq num])), [是否新组] )
注:如果
seq num不是连续整数(比如日期、非连续编号),先添加行号列排序,再将上述公式中的seq num替换为行号:行号 = RANKX('你的表名', '你的表名'[seq num], , ASC, DENSE)
步骤2:生成连续序列MIN/MAX表
用DAX创建新表,按error和GroupID聚合:
连续序列MIN_MAX表 = SUMMARIZE( '你的表名', '你的表名'[error], '你的表名'[GroupID], "MIN_seq", MIN('你的表名'[seq num]), "MAX_seq", MAX('你的表名'[seq num]) )
该表会显示每个连续A/B序列的最小和最大seq num。
需求2:按A/B类别汇总连续数值范围
步骤1:格式化序列范围(可选)
在连续序列MIN_MAX表中新建计算列,将MIN和MAX合并为范围字符串:
序列范围 = [MIN_seq] & " - " & [MAX_seq]
步骤2:按error汇总连续范围
用DAX创建新表,将同一error下的所有连续范围合并:
按类别汇总连续范围表 = SUMMARIZE( '连续序列MIN_MAX表', '连续序列MIN_MAX表'[error], "连续范围列表", CONCATENATEX( FILTER('连续序列MIN_MAX表', '连续序列MIN_MAX表'[error] = EARLIER('连续序列MIN_MAX表'[error])), [序列范围], ", " ) )
最终表会显示每个error对应的所有连续seq num范围,比如A对应1-3, 5-7。
内容的提问来源于stack exchange,提问作者jarsonX
相关产品推荐
相关产品推荐

