列出連結的工作專案範例查詢和報表

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019

本文說明如何建立報表,列出連結到其他工作專案的工作專案。 例如,下列報表會顯示連結至具有父子連結類型之 User Storys 的功能清單。

功能與使用者劇本數據表報表的父子連結螢幕快照。

若要深入了解連結類型和連結工作專案,請參閱 連結使用者劇本、問題、Bug 和其他工作專案

其他範例查詢包括列出具有另一個 Bug 重複連結的 Bug,以及列出不包含另一個 Bug 重複連結的 Bug。

注意

本文假設您已閱讀 使用 OData 查詢 的範例報表概觀,並具備 Power BI 的基本瞭解。

必要條件

  • 若要檢視分析數據和查詢服務,您必須是具有基本存取權或更高許可權的項目成員。 根據預設,所有專案成員都會獲得查詢分析的許可權,並定義分析檢視。
  • 若要瞭解有關服務與功能啟用和一般數據追蹤活動的其他必要條件,請參閱 存取分析的許可權和必要條件。

範例查詢

提供數個查詢,示範如何篩選連結的工作專案。 所有這些查詢都會 WorkItems 在傳回目前數據時指定實體集。

注意

若要判斷篩選或報表用途的可用屬性,請參閱 Azure Boards 的元數據參考。 您可以使用的 或 NavigationPropertyBinding PathEntitySet底下EntityType的任何Property值來篩選查詢或傳回屬性。 每個 EntitySet 對應至 EntityType。 若要深入瞭解每個值的數據類型,請檢閱針對對應 EntityType提供的元數據。

傳回功能及其子用戶劇本

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。


let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Closed' and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') " 
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Child' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

替代字串和查詢明細

以您的值取代下列字串。 請勿在替代中包含括號 {} 。 例如,如果您的組織名稱為 「Fabrikam」 ,請將 取代 {organization}Fabrikam,而非 {Fabrikam}

  • {organization} - 您的組織名稱
  • {project} - 針對跨項目查詢,您的小組專案名稱或完全省略 “/{project}”
  • {areapath} - 您的區域路徑。 範例格式: Project\Level1\Level2

查詢明細

下表描述查詢的每個部分。

查詢元件

說明

$filter=WorkItemType eq 'Feature'

傳回用戶劇本。

and State ne 'Closed' and State ne 'Removed'

省略 [狀態] 設定為 [已關閉] 或 [已移除的功能]。

and startswith(Area/AreaPath,'{areapath}')

只包含取代的特定區域路徑'{areapath}'下的功能。
若要依小組名稱進行篩選,請使用 filter 語句 Teams/any(x:x/TeamName eq '{teamname})'

&$select=WorkItemId,Title,WorkItemType,State,AreaSK

選取要傳回的欄位。

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),

指定要用來展開 AssignedToIteration和實體的 Area 欄位。

Links(

Links展開實體。

$filter=LinkTypeName eq 'Child'

將連結的工作項目篩選為只有具有 連結類型的專案。 其他範例包括 ParentChildDuplicate、Duplicate、DuplicateAffectsAffected。

and TargetWorkItem/WorkItemType eq 'User Story';

只包含連結的用戶劇本。

$select=LinkTypeName;

LinkTypeName選取要傳回的屬性。

$expand=TargetWorkItem($select=WorkItemType, WorkItemId, Title, State)

選取要傳回之連結工作項目的屬性。

)

Links()關閉 子句。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

傳回由 Teams 篩選的連結用戶劇本

下列查詢與本文先前使用的查詢相同,不同之處在於它會依 Team Name 篩選,而不是區域路徑。

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
    Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug') "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
            &"Links( "
                &"$filter=LinkTypeName eq 'Duplicate' "
                &"and TargetWorkItem/WorkItemType eq 'Bug'; "
                    &"$select=LinkTypeName; "
                &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
            &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

您可以將下面所列的 Power BI 查詢直接貼到 [取得資料空白>查詢 ] 視窗中。 如需詳細資訊,請檢閱 使用 OData 查詢的範例報表概觀。

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
                &"and State ne 'Closed' "
                &"and startswith(Area/AreaPath,'{areapath}') "
                &"and not (Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug')) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(選擇性)重新命名查詢

您可以將預設查詢標籤 Query1 重新命名為更有意義的專案。 只要從 [查詢 設定] 窗格中輸入新的名稱即可。

Power BI 查詢功能表選項、重新命名查詢的螢幕快照。

轉換 Power Query 編輯器 中的數據

建立報表之前,您必須展開傳回包含數個字段之記錄的數據行。 在此實例中,您會想要展開下列記錄:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

若要瞭解如何展開工作專案,請參閱 轉換分析數據以產生Power BI報表

(選擇性)重新命名字段

展開數據行之後,您可能會想要重新命名一或多個字段。 例如,您可以將資料列 AreaPath 重新命名為 Area Path。 您可以在資料表檢視中重新命名它們,或稍後在建立報表時重新命名。 若要瞭解如何,請參閱 重新命名數據行欄位

在這裡範例中,下列欄位已重新命名:

原始功能變數名稱 重新命名
Links.TargetWorkItem.ID 目標標識碼
LinksLinkTypeName 連結類型
Links.TargetWorkItem.State 目標狀態
Links.TargetWorkItem.Title 目標標題

關閉查詢並套用您的變更

完成所有數據轉換之後,請從 [常用] 功能表選擇 [關閉及套用],以儲存查詢並返回 Power BI 中的 [報表] 索引卷標。

Power Query 編輯器 關閉和套用選項的螢幕快照。

建立數據表報表以列出連結的工作專案

  1. 在 Power BI 中,選擇 [視覺效果] 底下的 [數據表報表]。

    [父子連結] 列表報表的 Power BI 視覺效果和字段選取項目的螢幕快照。

  2. 依指示給資料行的順序新增下列欄位:

    • 標識碼,以滑鼠右鍵按下並選取 [不摘要]
    • 州 (縣/市)
    • 職稱
    • 目標標識碼,以滑鼠右鍵按下並選取 [不摘要]
    • 連結類型
    • 目標狀態
    • 目標標題

範例報表隨即顯示。

功能與使用者劇本數據表報表的範例父子鏈接螢幕快照。