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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:53:16