簡體   English   中英

在SQL Server中獲取TFS 2015工作項層次結構

[英]Get the TFS 2015 Work Item Hierarchy in SQL Server

我正在嘗試在Tableau中創建一個報表,以生成TFS 2015中所有工作項及其各自層次結構的樹狀結構,例如

史詩->功能->用戶故事->任務

但是重復嘗試創建sql查詢失敗。 您能否通過SQL查詢幫助我,以幫助獲取所有工作項並顯示其層次結構?

謝謝。

建議不要使用SQL查詢,而應使用TFS REST API在TFS中創建查詢 ,WIQL看起來像:

"wiql": "select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] from WorkItemLinks where (Source.[System.TeamProject] = 'xxx' and Source.[System.WorkItemType] <> '' and Source.[System.State] <> '') and ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') and (Target.[System.WorkItemType] <> '') order by [System.Id] mode (Recursive)"

因此,我發現此查詢正在運行,並且可以幫助您為層次結構創建一個Tableau工作簿:

 WITH    cte
          AS ( SELECT   DimTeamProject.ProjectNodeName ,
                        System_WorkItemType ,
                        DimWorkItem.System_Id ,
                        FactWorkItemLinkHistory.TargetWorkItemID ,
                        DimWorkItem.System_Title,
                        DimWorkItem.System_State,
                        DimWorkItem.Microsoft_VSTS_Common_ActivatedDate,
                        DimWorkItem.Microsoft_VSTS_Scheduling_TargetDate,
                        DimWorkItem.System_CreatedDate,
                        DimWorkItemLinkType.LinkName,
                        TeamProjectSK,
                        system_rev,
                        row_number() over( partition by system_id,TeamProjectSK, FactWorkItemLinkHistory.TargetWorkItemID order by system_rev desc ) rownum
               FROM     DimWorkItem ,
                        DimTeamProject ,
                        FactWorkItemLinkHistory,
                        DimWorkItemLinkType
               WHERE    DimWorkItem.TeamProjectSK = DimTeamProject.ProjectNodeSK 
                        AND DimWorkItem.System_Id = FactWorkItemLinkHistory.SourceWorkItemID
                        and DimWorkItemLinkType.WorkItemLinkTypeSK = FactWorkItemLinkHistory.WorkItemLinkTypeSK
                        /*    -To Test the Query using the project Name of our choice-    */
                        --AND ProjectNodeName =
                        AND System_State in ('ACTIVE','NEW')
                        /* -System Revisions are created when the entry is modified. Onlt the latest entry will have the below revised date-  */
                        AND System_RevisedDate = '9999-01-01 00:00:00.000'
                        AND DimWorkItemLinkType.Linkname IN ( 'Parent',
                                                     'child' )
               GROUP BY DimTeamProject.ProjectNodeName ,
                        DimWorkItem.System_Id ,
                        FactWorkItemLinkHistory.TargetWorkItemID ,
                        DimWorkItem.System_Title ,
                        System_WorkItemType,
                        DimWorkItem.System_State,
                        TeamProjectSK,
                        DimWorkItemLinkType.LINKName,
                        DimWorkItem.Microsoft_VSTS_Common_ActivatedDate,
                        DimWorkItem.Microsoft_VSTS_Scheduling_TargetDate,
                        DimWorkItem.System_CreatedDate,
                        system_rev
             )
    SELECT distinct t1.ProjectNodeName ,
            t1.System_Id requirement_Id ,
            t1.System_WorkItemType,
            t1.System_Title requirement_title ,
            t2.System_Id Change_request_id ,
            t1.LinkName,
            t2.System_Title Change_Request_Title,
            t1.Microsoft_VSTS_Common_ActivatedDate,
            t1.System_CreatedDate,
            t1.Microsoft_VSTS_Scheduling_TargetDate,
            t1.System_State,
            T1.rownum
    FROM    cte t1
            INNER JOIN cte t2 ON t1.TargetWorkItemID = t2.System_Id
                                  and t1.rownum = 1

    ORDER BY t1.System_Id;

使用CTE查找完整的層次結構,它比以前發布的查詢更快,更高效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM