使用分析匯總工作追蹤數據
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
您可以使用搭配 OData 分析的兩種方式之一,取得工作追蹤數據的總和。 第一個方法會根據 OData 查詢傳回簡單的工作項目計數。 第二個方法會根據執行 OData 匯總延伸模組的 OData 查詢,傳回 JSON 格式化的結果。
本文是根據Construct OData queries for Analytics和Define basic queries using OData Analytics中提供的資訊進行擴展。 此外,本文的查詢著重於擷取工作項目數據,不過,原則適用於查詢其他實體集。
在本文中,您將了解:
- 關於 OData 匯總延伸模組
- 如何使用 OData 的匯總延伸模組
- 如何分組和篩選匯總結果
- 如何匯總數據以產生累計流程圖
若要了解如何產生簡單的計數方法,請參閱 傳回專案數量(無其他數據) 以及 傳回專案和數據數量。
注意
所有 Azure DevOps Services 的生產環境中都會自動啟用及支援 Analytics 服務。
Power BI 整合 和存取 Analytics Service 的 OData 資料來源 已正式推出。 我們鼓勵您使用它,並提供意見反應給我們。
可用的數據與版本相關。 最新支援的版本是 v2.0
,而最新的預覽版本是 v4.0-preview
。 如需詳細資訊,請參閱 OData API 版本控制。
注意
Azure DevOps Server 2020 和更新版本的所有新專案集合都會在生產環境中自動安裝並支援 Analytics 服務。 Power BI 整合 和存取 Analytics Service 的 OData 資料來源 已正式推出。 我們鼓勵您使用它,並提供意見反應給我們。 如果您從 Azure DevOps Server 2019 升級,則可以在升級期間安裝 Analytics 服務。
可用的數據與版本相關。 最新支援的版本是 v2.0
,而最新的預覽版本是 v4.0-preview
。 如需詳細資訊,請參閱 OData API 版本控制。
先決條件
類別 | 需求 |
---|---|
存取層級 |
-
專案成員。 - 至少 基本 存取權。 |
許可 | 根據預設,項目成員具有查詢分析及建立檢視的許可權。 如需有關服務與功能啟用和一般數據追蹤活動之其他必要條件的詳細資訊,請參閱 存取分析的許可權和必要條件。 |
OData 的匯總延伸模塊是什麼?
分析依賴 OData 來撰寫對工作追蹤數據的查詢。 OData 中的彙總功能是透過一個引入 $apply
關鍵詞的擴充項來實現的。 以下有一些如何使用這個關鍵詞的範例。 進一步瞭解OData 數據匯總擴充功能。
使用 OData 匯總延伸模組匯總數據
既然您已瞭解如何執行簡單的計數,讓我們來檢閱如何使用 $apply
令牌來觸發 URL 結尾基本格式的匯總,如下所示:
/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})
地點:
- {entitySetName} 是需要查詢的實體
- {columnToAggregate} 是匯總數據行
- {aggregationType} 會指定使用的匯總類型
- {newColumnName} 指定匯總之後具有值的數據行名稱。
使用應用擴充模組的匯總資料
在查詢工作追蹤數據時使用$apply
延伸模組,您可以取得計數、總和和其他資訊。
傳回所有剩餘工時的總和
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(RemainingWork with sum as SumOfRemainingWork)
傳回最後一個工作項目標識碼
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(WorkItemId with max as MaxWorkItemId)
使用 groupby 子句將結果分組
OData 聚合擴充功能也支援與 SQL groupby
子句相同的 GROUP BY
子句。 您可以使用這個子句,更詳細地快速細分數位。
例如,下列語句會返回工作項目的計數:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate($count as Count)
groupby
加入此子句以依類型回傳工作項目的計數:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType), aggregate($count as Count))
它會傳回類似此範例的結果:
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
{
"@odata.id":null,"WorkItemType":"Bug","Count":3
},
{
"@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
}
]
}
您也可以依多個屬性分組,如下列範例所示:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType, State), aggregate($count as Count))
它會傳回類似此範例的結果:
{
"@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
"value": [
{
"@odata.id": null,
"State": "Active",
"WorkItemType": "Bug",
"Count": 2
},
{
"@odata.id": null,
"State": "Committed",
"WorkItemType": "Bug",
"Count": 1
},
{
"@odata.id": null,
"State": "Active",
"WorkItemType": "Product Backlog Item",
"Count": 5
},
{
"@odata.id": null,
"State": "Committed",
"WorkItemType": "Product Backlog Item",
"Count": 8
}
]
}
您也可以跨實體分組,不過 OData 分組與您通常思考的方式不同。
例如,假設您想要知道組織或集合中每個專案中有多少個區域。 在 OData 中,「計算所有區域並依專案分組」相當於「給我所有專案和每個專案的區域計數」。 這會產生類似下列的查詢:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
$apply=groupby((Project/ProjectName), aggregate($count as Count))
篩選彙總的結果
您也可以篩選匯總結果,不過其套用方式與未使用匯總時稍有不同。 分析會沿著管道評估篩選,因此最好先執行最離散的篩選。
篩選看起來像下列範例:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=
filter(Iteration/IterationName eq 'Sprint 89')/
filter(WorkItemType eq 'User Story')/
groupby((State), aggregate($count as Count))
注意
您不需要提供 groupby
子句。 您可以直接使用 aggregate
子句來傳回單一值。
在單一呼叫內產生多個匯總
您可能想要提供多個資訊片段。 例如已完成工時的總和,以及個別剩餘工時的總和。 在這種情況下,您可以進行個別呼叫或單一呼叫,如下所示:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)
其會傳回類似此範例的結果:
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
{
"@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
}
]
}
生成計算後的屬性以在單一呼叫中使用
您可能需要使用數學表示式來計算屬性,以用於結果集。 例如,已完成工時的總和除以已完成工時的總和加上剩餘工時的總和,以計算已完成工時百分比。 在這種情況下,您可以使用下列範例:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
{
"@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
}
]
}
從匯總數據產生累積流程圖
假設您想要在Power BI 中建立 累積流程圖 。 您可以使用類似下列的查詢:
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue
它會傳回類似這個範例的結果。 然後,您可以直接在您選擇的數據視覺效果內使用它。
{
"@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
"value": [
{
"@odata.id": null,
"DateValue": "2015-07-16T00:00:00-07:00",
"Count": 324,
"ColumnName": "Completed"
},
{
"@odata.id": null,
"DateValue": "2015-07-16T00:00:00-07:00",
"Count": 5,
"ColumnName": "In Progress"
}
]
}
讓我們看看此查詢的實際用途:
- 將數據篩選至特定小組
- 將數據篩選至特定的待辦專案
- 傳回工作項目的計數。
重新整理Power BI或Excel時,所需的數據列越少,重新整理的速度就越快。