WIQL:仅获取特定日期迭代中的顶级项目

WIQL: Get only top level items in Iteration asOf specific date

什么和为什么

我的目标是找出最初计划用于 sprint 的项目、延迟添加的项目以及延迟移出 sprint 的项目

我正在尝试使用 Azure Devops Rest API 查询 iteration 的所有 top level items使用以下端点的特定时间点

Azure DevOps Rest API Documentation - Query By Wiql


如何

我的第一个查询 returns 顶级项目,但遗憾的是只有 如果有 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'

第二个查询我尝试了 returns 所有顶级迭代项,但我无法指定 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)

问题

如何在特定时间点[=44]查询所有顶级迭代项,因为它们在Sprint Backlog中显示=]?

通过在过滤 [System.WorkItemType] 时使用 IN GROUP,不再需要查询 WorkItemLinks,这解决了这两个问题,因为我们随后可以使用 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'