查询TFS服务器事件
我被要求调查在Power BI中创建热图报告的情况,以便经理提出并查看其员工正在执行的所有任务,以及进度、接近截止日期、关键等的状态 对于数据源,我正在探索TFS数据库。 在TFS数据库中,哪些视图可以用来跟踪工作项 我查看了TFS数据仓库数据库并检查了DimWorkItem表 我需要检索工作项,如需求、变更请求、Bug等,以及此工作项的子任务工作项类型为“任务”。 此外,查看DimWorkItem视图,我可以检索工作项,如需求、更改请求、错误等,并且此工作项的子任务工作项类型为“任务” 但是,我没有看到标识任务父级的列。例如,如果ID为333的任务有一个子任务为338,我如何才能找到连接查询TFS服务器事件,tfs,Tfs,我被要求调查在Power BI中创建热图报告的情况,以便经理提出并查看其员工正在执行的所有任务,以及进度、接近截止日期、关键等的状态 对于数据源,我正在探索TFS数据库。 在TFS数据库中,哪些视图可以用来跟踪工作项 我查看了TFS数据仓库数据库并检查了DimWorkItem表 我需要检索工作项,如需求、变更请求、Bug等,以及此工作项的子任务工作项类型为“任务”。 此外,查看DimWorkItem视图,我可以检索工作项,如需求、更改请求、错误等,并且此工作项的子任务工作项类型为“任务” 但是,
我在这些事件视图中没有看到任何子列或父列。您可以尝试使用vDimWorkItemTreeOverlay视图作为数据源。这是具有一个层次结构级别的示例查询:
SELECT Parent.[WorkItem]
,Parent.[System_Id]
,Parent.[System_Title]
,Parent.[System_State]
,Parent.[System_WorkItemType]
,Parent.[Microsoft_VSTS_Scheduling_TargetDate]
,Child.[WorkItem]
,Child.[System_Id]
,Child.[System_Title]
,Child.[System_State]
,Child.[System_Reason]
,Child.[System_WorkItemType]
,Child.[Microsoft_VSTS_Scheduling_StartDate]
,Child.[Microsoft_VSTS_Scheduling_FinishDate]
FROM [Tfs_Warehouse].[dbo].[vDimWorkItemTreeOverlay] Parent
LEFT JOIN [Tfs_Warehouse].[dbo].[vDimWorkItemTreeOverlay] Child ON Child.ParentWorkItemTreeSK = Parent.WorkItemTreeSK
WHERE Parent.AreaTeamProject = 'DEV' AND Parent.System_IsDeleted = 0 AND Parent.System_WorkItemType in ('Bug', 'Product Backlog Item', 'Requirement') AND Child.System_WorkItemType = 'Task'
AND Parent.WorkItemTreeSK = Parent.ParentWorkItemTreeSK AND Child.System_IsDeleted = 0
这是我的结果:
首先在测试环境中检查此项
此外,我还使用工作层次结构更改了标准tfs报告中的查询。它只适用于一个集合。如果您有多个集合,则可能会对其进行更新:
DECLARE @ParentWorkItemLinkTypeSK int;
SET @ParentWorkItemLinkTypeSK = (SELECT [WorkItemLinkTypeSK] FROM [DimWorkItemLinkType] WHERE [LinkID] < 0 AND [ReferenceName] = 'System.LinkTypes.Hierarchy');
DECLARE @ChildWorkItemLinkTypeSK int;
SET @ChildWorkItemLinkTypeSK = (SELECT [WorkItemLinkTypeSK] FROM [DimWorkItemLinkType] WHERE [LinkID] > 0 AND [ReferenceName] = 'System.LinkTypes.Hierarchy');
DECLARE @ProjectName nvarchar(256);
SET @ProjectName = 'DEV'; -- set the team project name
DECLARE @RootNodeIDs TABLE (ID int);
INSERT @RootNodeIDs
-- This is selecting all deliverable workitems
SELECT cwi.[System_Id] AS ID FROM [CurrentWorkItemView] cwi
WHERE cwi.[System_WorkItemType] IN ('Bug', 'Product Backlog Item', 'Requirement')
AND cwi.[ProjectNodeName] = @ProjectName
EXCEPT
-- This is selecting all workitems that have a parent and have not been deleted
SELECT lh.SourceWorkItemID AS ID FROM FactWorkItemLinkHistory lh
JOIN [CurrentWorkItemView] cwi ON cwi.System_Id = lh.TargetWorkItemID
WHERE lh.WorkItemLinkTypeSK = @ParentWorkItemLinkTypeSK
AND cwi.System_WorkItemType IN ('Bug', 'Product Backlog Item', 'Requirement')
AND lh.RemovedDate = CONVERT(DATETIME, '9999', 126)
DECLARE @Hierarchy TABLE (ID int, ParentID int, [Level] int, [Path] nvarchar(4000));
WITH
Hierarchy (ID, ParentID, [Level], [Path]) AS
(
SELECT ID, NULL as ParentID, 0 as [Level], CAST('/' + STR(ID) AS nvarchar(256)) as [Path]
FROM @RootNodeIDs rootId
UNION ALL
SELECT flh.TargetWorkItemID as ID, Parent.ID, parent.Level + 1 as [Level],
CAST(parent.Path + '/' + STR(flh.TargetWorkItemID) AS nvarchar(256)) as [Path]
FROM Hierarchy parent
JOIN FactWorkItemLinkHistory flh
ON flh.WorkItemLinkTypeSK = @ChildWorkItemLinkTypeSK
AND flh.SourceWorkItemID = parent.ID
AND flh.RemovedDate = CONVERT(DATETIME, '9999', 126)
JOIN [CurrentWorkItemView] wi ON flh.TargetWorkItemID = wi.[System_ID]
WHERE parent.Path NOT LIKE CAST('%' + STR(flh.TargetWorkItemID) + '%' AS nvarchar(20)) AND parent.Level < 20
)
INSERT @Hierarchy SELECT * FROM Hierarchy;
-- Hierarchy now contains all the Tasks and their ancestors that we're interested
SELECT hierarchy.ID, ParentID, [Level], [Path], [ProjectNodeName] as Project, [System_State] as [State],
[Microsoft_VSTS_Scheduling_RemainingWork] Remaining,
[Microsoft_VSTS_Scheduling_CompletedWork] Completed,
([Microsoft_VSTS_Scheduling_RemainingWork] + [Microsoft_VSTS_Scheduling_CompletedWork]) Total,
[System_WorkItemType] WIT,
[System_Title] Title,
[AreaPath] AreaPath,
[IterationPath] IterationPath
FROM @Hierarchy hierarchy
INNER JOIN [CurrentWorkItemView] ON hierarchy.ID = [System_ID]
ORDER BY [System_Id]
结果:
我们使用的是什么版本的TFS?我们使用的是Visual Studio 2017.VS不是TFS。无论如何,TFS_仓库数据库不包含ipmTfsIncidentsV和ipmTfsPriorityIncidentsV视图。我想这是你或你公司的习惯观点。我们可以讨论现成TFS_仓库数据库的表和视图。你说得对。我已经更新了原来的帖子。尽管解决方案在数据库中的某个地方,但我仍然看不到子任务如何链接到数据库中的父工作项。它们链接在此表FactWorkItemLinkHistory中。