Power BI星型模型下计算最新发布周期Bug数量的度量值问题求助
问题排查与解决方法
核心问题分析
你的度量值返回空值,大概率是表关系的筛选方向不匹配,加上度量值逻辑搞反了关联方向导致的:
- 表关系
defect_report[IssueKey] = test_execution_summary[ExecutionDefect]默认是单方向筛选(从defect_report到test_execution_summary),当你筛选test_execution_summary的practice、project、周期时,无法反向筛选defect_report。 - 原度量值用
RELATEDTABLE(test_execution_summary)作为筛选条件,是从defect_report的上下文去关联test记录,但你的需求是从筛选后的test记录去关联对应的Bug,逻辑方向完全相反。
具体解决步骤
1. 先检查表关联的基础数据
- 确认
test_execution_summary[ExecutionDefect]和defect_report[IssueKey]的数据格式完全一致:比如有没有多余空格、大小写差异(比如"BUG"和"Bug")、空值情况,这些都会导致关联失效。 - 在数据视图中,手动筛选test_execution_summary的目标记录,查看对应的
ExecutionDefect值,去defect_report里搜索,确认是否存在且Issue Type为"Bug"。
2. 调整表关系的交叉筛选方向
在Power BI模型视图中:
- 选中
defect_report和test_execution_summary之间的关系线 - 在右侧属性面板中,把交叉筛选方向改成「双向」,这样筛选test_execution_summary时,defect_report会同步被筛选。
3. 替换为正确的度量值
推荐两种写法,任选其一即可:
写法一:用TREATAS关联筛选后的缺陷ID
Bugs Count = CALCULATE( COUNTROWS(defect_report), defect_report[Issue Type] = "Bug", TREATAS(VALUES(test_execution_summary[ExecutionDefect]), defect_report[IssueKey]) )
逻辑:先提取当前筛选的test_execution_summary里的所有缺陷ID,再用这些ID去筛选defect_report中的Bug并计数。
写法二:遍历test记录统计关联的Bug
Bugs Count = COUNTX( FILTER(test_execution_summary, NOT(ISBLANK(test_execution_summary[ExecutionDefect]))), IF(RELATED(defect_report[Issue Type]) = "Bug", 1, BLANK()) )
逻辑:遍历筛选后的test记录,跳过没有关联缺陷的行,统计其中关联到Bug的数量。
4. 验证可视化筛选
确保你的「最近发布版本对应的周期」筛选器是基于test_cycle_details或test_execution_summary的字段,且表关系test_cycle_details[cycleID] = test_execution_summary[CycleID]的交叉筛选方向也正确(建议设为双向)。
内容的提问来源于stack exchange,提问作者udani
相关产品推荐
相关产品推荐

