분석을 사용하여 작업 추적 데이터 집계
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
OData와 함께 Analytics를 사용하는 두 가지 방법 중 하나로 작업 추적 데이터의 합계를 가져올 수 있습니다. 첫 번째 메서드는 OData 쿼리에 따라 간단한 작업 항목 수를 반환합니다. 두 번째 메서드는 OData 집계 확장을 연습하는 OData 쿼리를 기반으로 JSON 형식의 결과를 반환합니다.
이 문서에서는 분석을 위한 OData 쿼리 생성 및 OData 분석을 사용하여 기본 쿼리 정의에 제공된 정보를 작성합니다. 또한 쿼리는 이 문서에서 작업 항목 데이터를 검색하는 데 초점을 맞추고 있지만 다른 엔터티 집합을 쿼리하는 데는 원칙이 적용됩니다.
이 문서에서는 다음에 대해 알아봅니다.
- OData 집계 확장 정보
- OData에 대한 집계 확장을 사용하는 방법
- 집계된 결과를 그룹화하고 필터링하는 방법
- 누적 흐름 다이어그램을 생성하기 위해 데이터를 집계하는 방법
단순 개수를 생성하는 방법을 알아보려면 항목 수 반환(다른 데이터 없음) 및 항목 및 데이터 개수 반환을 참조하세요.
참고 항목
Analytics 서비스는 모든 Azure DevOps Services에 대해 프로덕션에서 자동으로 사용하도록 설정되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
참고 항목
Analytics 서비스는 Azure DevOps Server 2020 이상 버전의 모든 새 프로젝트 컬렉션에 대해 프로덕션에 자동으로 설치되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다. Azure DevOps Server 2019에서 업그레이드한 경우 업그레이드 중에 Analytics 서비스를 설치할 수 있습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
참고 항목
Analytics 서비스는 Azure DevOps Server 2019용 미리 보기로 제공됩니다. 프로젝트 컬렉션에 사용하도록 설정하거나 설치할 수 있습니다. Power BI 통합 및 Analytics Service의 OData 피드에 대한 액세스는 미리 보기로 제공됩니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
OData에 대한 집계 확장이란?
Analytics는 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 집계 확장은 SQL GROUP BY
절과 groupby
동일한 절도 지원합니다. 이 절을 사용하여 숫자를 더 자세히 빠르게 분석할 수 있습니다.
예를 들어 다음 절은 작업 항목 수를 반환합니다.
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을 새로 고칠 때 필요한 행 수가 적을수록 새로 고침 속도가 빨라집니다.