首页 > 解决方案 > WIQL:仅在特定日期的迭代中获取顶级项目

问题描述

什么为什么

我的目标是找出最初为 sprint 计划的项目,哪些项目已延迟添加,哪些项目延迟移出 sprint

我正在尝试使用 Azure Devops Rest API使用以下端点在特定时间点查询迭代的所有顶级项目:

Azure DevOps Rest API 文档 - 通过 Wiql 查询


如何

我的第一个查询返回顶级项目,但遗憾的是只有当有任何 children 时。至少我可以使用asOf,因为mode(MustContain)允许它:

SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
FROM WorkItemLinks

WHERE (Source.[System.IterationPath] = 'Name of the iteration') 
  AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') 
ORDER BY [Microsoft.VSTS.Common.StackRank] asc, [System.CreatedDate] desc

mode(MustContain)
asof '05/05/2021'

我尝试的第二个查询返回所有顶级迭代项,但我不能指定asOf,因为mode(Recursive)禁止它:

SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State]
FROM WorkItemLinks

WHERE [Source].[System.IterationPath] = 'Name of the iteration'
AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
ORDER BY [System.Id]

mode(Recursive)

问题

如何查询在特定时间点在中看到的所有顶级迭代项?Sprint Backlog

标签: azureazure-devopsazure-devops-rest-apiwiql

解决方案


通过使用IN GROUPwhen 过滤,[System.WorkItemType]不再需要查询WorkItemLinkswhich 解决了这两个问题,因为我们可以使用asOf

SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
FROM WorkItems 

WHERE [System.IterationPath] = 'Name of the iteration'
AND 
(
    [System.WorkItemType] IN GROUP 'Microsoft.RequirementCategory' OR 
    [System.WorkItemType] IN GROUP 'Microsoft.BugCategory' 
)

ORDER BY [Microsoft.VSTS.Common.StackRank] asc, [System.CreatedDate] desc
ASOF '05/05/2021'

推荐阅读