使用分析匯總工作追蹤數據
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
您可以使用搭配 OData 分析的兩種方式之一,取得工作追蹤數據的總和。 第一個方法會根據 OData 查詢傳回簡單的工作項目計數。 第二個方法會根據執行 OData 匯總延伸模組的 OData 查詢,傳回 JSON 格式化的結果。
本文會建置建構適用於 Analytics 的 OData 查詢中提供的資訊,並使用 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 版本控制。
注意
Azure DevOps Server 2019 的 Analytics 服務處於預覽狀態。 您可以 啟用或安裝 專案集合。 Power BI 整合 和分析 服務的 OData 摘要 存取處於預覽狀態。 我們鼓勵您使用它,並提供意見反應給我們。
可用的數據與版本相關。 最新支援的版本是 v2.0
,而最新的預覽版本是 v4.0-preview
。 如需詳細資訊,請參閱 OData API 版本控制。
OData 的匯總延伸模塊是什麼?
分析依賴 OData 來撰寫對工作追蹤數據的查詢。 OData 中的彙總是使用引進 關鍵詞的 $apply
擴充功能來達成。 以下有一些如何使用這個關鍵詞的範例。 在適用於數據匯總的 OData 延伸模組中深入瞭解延伸模組。
使用 OData 匯總延伸模組匯總數據
既然您已瞭解如何執行簡單的計數,讓我們來檢閱如何使用 URL 結尾基本格式的令牌來觸發匯總 $apply
,如下所示:
/{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 匯總延伸模組也支援與 groupby
SQL 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時,所需的數據列越少,重新整理的速度就越快。