使用Power BI通过OData源查询Azure DevOps工作项修订数据报错
解决Power BI调用Azure DevOps Analytics OData获取WorkItemRevision的报错问题
问题1:AreaPath空值报错
首次报错是因为部分WorkItem修订版本的AreaPath字段为空,而OData服务定义该字段不允许空值。解决方式是在OData查询中直接过滤掉AreaPath为空的记录:
修改后的OData查询语句:
= OData.Feed("https://analytics.dev.azure.com/organization/project/_odata/V3.0-preview/WorkItemRevisions?$filter=WorkItemType eq 'User Story' and AreaPath ne null&$select=WorkItemId,Title,WorkItemType,State,IterationPath,AreaPath,RevisedDate", null, [Implementation="2.0", ODataVersion=4])
说明:
- 添加
AreaPath ne null过滤条件,直接排除空AreaPath的修订记录 - 用
$select明确指定需要返回的字段,避免服务返回不必要的字段,同时确保IterationPath被包含在返回结果中
问题2:IterationPath字段缺失报错
添加OmitValues=ODataOmitValues.Nulls后报错,是因为当某些修订版本的IterationPath为空时,OData服务会直接省略该字段,导致Power BI预期的字段不存在。解决方式是移除OmitValues参数,改用Power Query处理空值:
- 加载数据后,进入Power Query编辑器
- 选中
IterationPath列,点击「转换」选项卡 → 「填充」→ 「向下填充」(适合同一工作项后续修订有迭代路径的场景),或者用「替换值」将空值替换为自定义文本(如"未分配迭代") - 也可以用M代码直接处理:
= Table.ReplaceValue(源,null,"未分配迭代",Replacer.ReplaceValue,{"IterationPath"})
额外提示:获取Sprint计划与完成工作项
要构建速度图,还需要筛选每个Sprint对应的计划和完成项:
- 计划工作项:筛选出在Sprint开始日期前,
IterationPath为当前Sprint且状态为「待办」/「准备就绪」的修订记录(取每个工作项在Sprint开始时的最新修订状态) - 完成工作项:筛选出在Sprint时间范围内,状态变为「完成」/「已关闭」的修订记录(取状态变更时间落在Sprint周期内的记录)
内容的提问来源于stack exchange,提问作者ArundhatiD
相关产品推荐
相关产品推荐

