查询TFS服务器事件

查询TFS服务器事件,tfs,Tfs,我被要求调查在Power BI中创建热图报告的情况,以便经理提出并查看其员工正在执行的所有任务,以及进度、接近截止日期、关键等的状态 对于数据源,我正在探索TFS数据库。 在TFS数据库中,哪些视图可以用来跟踪工作项 我查看了TFS数据仓库数据库并检查了DimWorkItem表 我需要检索工作项,如需求、变更请求、Bug等,以及此工作项的子任务工作项类型为“任务”。 此外,查看DimWorkItem视图,我可以检索工作项,如需求、更改请求、错误等,并且此工作项的子任务工作项类型为“任务” 但是,

我被要求调查在Power BI中创建热图报告的情况,以便经理提出并查看其员工正在执行的所有任务,以及进度、接近截止日期、关键等的状态

对于数据源,我正在探索TFS数据库。 在TFS数据库中,哪些视图可以用来跟踪工作项

我查看了TFS数据仓库数据库并检查了DimWorkItem表

我需要检索工作项,如需求、变更请求、Bug等,以及此工作项的子任务工作项类型为“任务”。 此外,查看DimWorkItem视图,我可以检索工作项,如需求、更改请求、错误等,并且此工作项的子任务工作项类型为“任务”

但是,我没有看到标识任务父级的列。例如,如果ID为333的任务有一个子任务为338,我如何才能找到连接


我在这些事件视图中没有看到任何子列或父列。

您可以尝试使用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中。