Power BI中DAX自定义最近4个周期计算异常问题
问题解决:Power BI DAX实现切片器选中单个版本时显示最近4个版本数据
原代码的核心问题是使用了ALLSELECTED(Errors[Version]),导致切片器选中单个版本时,版本筛选范围被限制为仅选中的版本,无法获取历史版本。以下是针对性的解决方案:
方案1:表格显示每个目标版本的每类别问题数
该方案会让表格仅显示选中版本及最近3个历史版本(共4个)的行,每行展示对应版本的每类别问题数:
每类别问题数(最近4个版本) = VAR SelectedVersion = MAX(Errors[Version]) // 获取切片器选中的版本(多选时取最新版本) VAR AllValidVersions = FILTER(ALL(Errors[Version]), NOT ISBLANK(Errors[Version])) // 全量非空版本列表 VAR TargetVersions = TOPN(4, FILTER(AllValidVersions, Errors[Version] <= SelectedVersion), Errors[Version], DESC) // 选中版本+最近3个历史版本 VAR CurrentRowVersion = SELECTEDVALUE(Errors[Version]) VAR IsInTarget = CONTAINS(TargetVersions, Errors[Version], CurrentRowVersion) RETURN IF( IsInTarget, DIVIDE([Total Issues], DISTINCTCOUNT(Errors[Category])), // 计算当前版本的每类别问题数 BLANK() // 非目标版本返回空,自动隐藏该行 )
方案2:计算最近4个版本的整体每类别问题平均值
该方案直接计算选中版本及最近3个历史版本的整体平均值,不受切片器单个版本筛选的限制:
最近4个版本每类别问题平均值 = VAR SelectedVersion = MAX(Errors[Version]) VAR AllValidVersions = FILTER(ALL(Errors[Version]), NOT ISBLANK(Errors[Version])) VAR TargetVersions = TOPN(4, FILTER(AllValidVersions, Errors[Version] <= SelectedVersion), Errors[Version], DESC) VAR TotalIssues = CALCULATE([Total Issues], TargetVersions) // 目标版本总问题数 VAR TotalCategories = CALCULATE(DISTINCTCOUNT(Errors[Category]), TargetVersions) // 目标版本涉及的类别数 VAR VersionCount = COUNTROWS(TargetVersions) // 目标版本数量 RETURN DIVIDE(TotalIssues, TotalCategories * VersionCount) // 总问题数÷(类别数×版本数),即每类别每版本的平均问题数
自定义调整说明
如果需要像你例子中那样显示选中版本及之前4个历史版本(共5个),只需将代码中的TOPN(4, ...)修改为TOPN(5, ...)即可。
内容的提问来源于stack exchange,提问作者Firhed
相关产品推荐
相关产品推荐

