azure-devops - Azure DevOps OData Sprint Burndown Chart 未显示 0 故事点
问题描述
在使用 OData 查询构建 Power BI 报告时,我指的是这个MS 文档。
我稍微修改了查询以显示 Sprint Burndown,逐个 sprint 并且一切正常,直到我意识到当团队完成所有故事点时,正确地,burndown 区域应该一直归零,就像我们在Azure DevOps UI 中的 Sprint > Analytics,但在我的 OData 查询中,数据的最后一天不会显示,因为它没有故事点,导致我的可视化永远不会归零(但实际上它确实如此)。
你可能会问我为什么要定制 Power BI 报告,我要跨多个组织进行这种可视化,这就是为什么我们希望在单个 Power BI 报告中获得所有这些组织的整体视图。
我的 OData 查询
let
Source = OData.Feed ("https://analytics.dev.azure.com/"& Organization &"/_odata/v3.0-preview/WorkItemSnapshot? "
&"$apply=filter( "
&"Project/ProjectName eq '{ProjectName}' "
&"and WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and DateValue ge Iteration/StartDate "
&"and DateValue le Iteration/EndDate "
&"and Iteration/StartDate ge 2020-01-01Z "
&") "
&" &$expand=Project,Iteration,Teams"
),
#"Expanded Project" = Table.ExpandRecordColumn(Source, "Project", {"ProjectName"}, {"Project.ProjectName"}),
#"Expanded Iteration" = Table.ExpandRecordColumn(#"Expanded Project", "Iteration", {"IterationName", "IterationPath", "StartDate", "EndDate"}, {"Iteration.IterationName", "Iteration.IterationPath", "Iteration.StartDate", "Iteration.EndDate"}),
#"Expanded Teams" = Table.ExpandTableColumn(#"Expanded Iteration", "Teams", {"TeamName"}, {"Teams.TeamName"}),
#"Removed Other Columns" = Table.SelectColumns(#"Expanded Teams",{"WorkItemId", "CompletedDate", "StoryPoints", "Teams.TeamName", "Project.ProjectName", "Iteration.IterationName", "Iteration.IterationPath", "Iteration.StartDate", "Iteration.EndDate", "DateValue"}),
#"Grouped Rows" = Table.Group(#"Removed Other Columns", {"Teams.TeamName", "Project.ProjectName", "Iteration.IterationName", "Iteration.IterationPath", "Iteration.StartDate", "Iteration.EndDate", "DateValue"}, {{"Total Story Points", each List.Sum([StoryPoints]), type number}})
in
#"Grouped Rows"
它可能看起来不像你看到的那样优雅我没有在做服务器端 groupby,但我也想拥有 teamName 信息,我尝试在查询中扩展和 groupby,但不断出错。
我也知道没有 0 故事点的原因是因为 StateCategory ne 'Completed' "
. 如何在 Power BI 中正确可视化 Azure DevOps 燃尽图?
p / s:如果有人能建议可视化总范围和理想趋势,那就更好了。
解决方案
以下查询将用于计算总范围
https://analytics.dev.azure.com/{orgName}/{ProjectName}/_odata/v3.0-preview/WorkItemSnapshot?
$apply=filter(
Teams/any(d:d/TeamName eq '{TeamName}')
and Iteration/IterationName eq '{IterationName}'
and (WorkItemType eq 'User Story')
and StateCategory ne null
and (DateValue ge Iteration/StartDate
and DateValue le Iteration/EndDate))
/groupby((DateSK),aggregate($count as TotalScope))
但是,您将不得不为此查询遍历每个团队,我找不到任何方法来根据团队对结果进行分组。您可以使用 Teams Rest API 获取所有团队。希望这可以帮助。:)
推荐阅读
- lua - 构建脚本未运行
- python - 在 raspbian/linux 上打印错误 Pyqt Qwebkit
- c# - 使用 C# 的 Microsoft.Office.Interop 从 Microsoft Excel 复制格式化的单元格区域并粘贴到 Microsoft Word
- python - Python os.remove(filename) 抛出错误“已被 temp 使用”
- php - 试图在laravel中获取非对象问题的属性
- perl - 如何使用任何 windows 或 unix/linux 命令行脚本按范围递增文件中的文本?
- sql - 执行滚动计算的 SQL 临时表数组
- javascript - 本地 JS 文件未在 Heroku 上加载/运行
- reactjs - React Custom Hook with Typescript Type error "Property 'x' does not exist on type 'interface | (({ target }: any) => void)'.ts(2339)"
- reactjs - 抓取多个选中的复选框值(React JS)