Power BI PATH函数报错:父工作项ID需存在于工作项ID中
解决Power BI中Azure DevOps工作项PATH函数报错及测试用例计数问题
问题根源
报错核心是新增工作项里的父ID(127114)未出现在当前数据集的Work Item Id列中,而PATH函数要求所有父ID必须在ID列内存在。你之前的IsValid列过滤逻辑失效,是因为PATH函数会先校验所有行的父ID有效性,再执行IF判断,导致错误提前触发。
修复步骤
1. 修正IsValid列(覆盖根节点+无效父ID场景)
原逻辑未考虑根节点(父ID为空)的合法情况,优化后:
IsValid = VAR ParentId = SoftwareFactoryData[Parent Work Item Id] RETURN // 父ID为空(根节点)或父ID存在于Work Item Id中则标记为有效 IF(ISBLANK(ParentId) || CONTAINS(SoftwareFactoryData, [Work Item Id], ParentId), 1, 0)
2. 安全生成Item Path(规避PATH函数报错)
直接调用PATH会因无效父ID触发全局错误,改用以下两种方案:
方案A:限制PATH计算范围
仅在有效行内计算路径,避免无效父ID干扰:
Item Path = VAR CurrentId = SoftwareFactoryData[Work Item Id] VAR ValidParent = LOOKUPVALUE(SoftwareFactoryData[Parent Work Item Id], SoftwareFactoryData[Work Item Id], CurrentId) RETURN IF( [IsValid] = 1, PATH(CurrentId, ValidParent), BLANK() )
方案B:自定义递归生成路径(更稳定)
如果方案A仍报错,手动构建路径(假设层级不超过10层,可按需调整):
Item Path = VAR CurrentId = SoftwareFactoryData[Work Item Id] VAR BuildPath = ADDCOLUMNS( GENERATESERIES(1, 10), "PathPart", VAR Level = [Value] RETURN IF( Level = 1, CurrentId, LOOKUPVALUE( SoftwareFactoryData[Work Item Id], SoftwareFactoryData[Work Item Id], LOOKUPVALUE(SoftwareFactoryData[Parent Work Item Id], SoftwareFactoryData[Work Item Id], EARLIER([PathPart])) ) ) ) RETURN IF([IsValid] = 1, CONCATENATEX(FILTER(BuildPath, NOT(ISBLANK([PathPart]))), [PathPart], "|"), BLANK())
3. 修正测试用例计数度量值
原度量值上下文切换易出错,改用ALL确保计数当前节点下所有测试用例:
Test Cases # = VAR CurrentItemId = SELECTEDVALUE(SoftwareFactoryData[Work Item Id]) RETURN CALCULATE( COUNTROWS(SoftwareFactoryData), ALL(SoftwareFactoryData), SoftwareFactoryData[Work Item Type] = "Test Case", PATHCONTAINS(SoftwareFactoryData[Item Path], CurrentItemId) )
额外建议
- 检查Azure DevOps数据完整性:若需要完整层级,补充导入父ID为127114的工作项
- 提前在Power Query处理:导入数据时直接过滤掉父ID不在当前数据集的行,从源头避免无效数据
内容的提问来源于stack exchange,提问作者kudlatiger
相关产品推荐
相关产品推荐

