分享方式:


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

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. 依指示給資料行的順序新增下列欄位:

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

範例報表隨即顯示。

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