共用方式為


列出已連結的工作項目範例查詢和報表

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

這篇文章將教你如何建立一份報表,列出與其他工作項目相關聯的工作項目。 例如,下列報表會顯示與具有父子關聯類型的使用者故事連結的功能清單。

功能特性與用戶故事表的父子連結螢幕截圖。

如需連結類型和連結工作專案的詳細資訊,請參閱 連結使用者劇本、問題、Bug 和其他工作專案

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

注意

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

類別 要求
存取層級 - 專案成員
- 至少擁有 基本 存取權限。
許可 根據預設,項目成員具有查詢分析及建立檢視的許可權。 如需有關服務與功能啟用和一般數據追蹤活動之其他必要條件的詳細資訊,請參閱 存取分析的許可權和必要條件。

範例查詢

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

注意

若要判斷篩選或報表用途的可用屬性,請參閱 Azure Boards 的元數據參考。 您可以使用 Property 下的任何 EntityType 值或 NavigationPropertyBinding Path 值或 EntitySet 值來篩選查詢或返回屬性。 每個 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),

指定要用來展開 AssignedToIterationArea 實體的欄位。

Links(

請展開Links實體。

$filter=LinkTypeName eq 'Child'

將連結的工作項目篩選為僅限具有 連結類型的工作項目。 其他範例包括 ParentChildDuplicateDuplicate OfAffectsAffected By

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

傳回由團隊篩選的連結使用者故事

下列查詢與本文先前使用的查詢相同,不同之處在於它會依 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 目標標識碼
連結類型名稱 連結類型
鏈接.目標工作項目.狀態 目標狀態
連結.目標工作項目.標題 目標標題

關閉查詢並套用您的變更

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

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

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

  1. 在 Power BI 中,於視覺效果中選擇表格報表。

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

  2. 按照指定的順序在資料行中新增下列欄位:

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

範例報表隨即顯示。

功能與使用者需求表格報告的範例父子鏈結螢幕截圖。