분석을 사용하여 작업 추적 데이터 쿼리
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
이 문서에 제공된 기본 쿼리를 사용하여 Azure DevOps 작업 추적 데이터를 쿼리할 수 있습니다. 이러한 쿼리는 분석의 다양한 기능을 보여 주면서 일상적인 요구를 해결합니다. 이러한 쿼리의 대부분을 요구 사항에 맞게 조정할 수 있습니다.
이 문서에서는 Azure Boards Analytics에 대한 분석 및 메타데이터 참조에 대한 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 버전 관리를 참조 하세요.
필수 조건
- 액세스: 최소한 기본 액세스 권한이 있는 프로젝트의 멤버여야 합니다.
- 사용 권한: 기본적으로 프로젝트 멤버는 분석을 쿼리하고 뷰를 만들 수 있는 권한이 있습니다.
- 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 기타 필수 구성 요소에 대한 자세한 내용은 Analytics에 액세스하기 위한 사용 권한 및 필수 구성 요소를 참조 하세요.
모든 예제는 Azure DevOps의 프로젝트로 범위가 지정됩니다. 조직 수준 범위 지정 또는 Azure DevOps Server의 예는 프로젝트 및 조직 범위 쿼리를 참조 하세요.
팁
WIQL to OData Azure DevOps Marketplace 확장을 사용하여 쿼리 페이지의 작업 항목 쿼리를 기반으로 OData 쿼리를 신속하게 생성할 수 있습니다. 이 확장은 작업 항목 및 작업 항목 및 직접 링크의 플랫 목록 변환을 지원합니다. 확장은 Azure Boards의 지원되는 기능이 아니므로 제품 팀에서 지원하지 않습니다. 이러한 확장을 사용하는 경우 질문, 제안 또는 문제가 있는 경우 해당 확장 페이지를 방문하세요.
변경된 날짜에 따라 작업 항목 필터링
엔터티 집합을 WorkItems
쿼리하여 필드 조건을 충족하는 작업 항목을 나열합니다.
다음 쿼리는 변경된 날짜가 2021년 12월 12일 보다 큰 제품 백로그 항목, 버그 및 기능을 반환합니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems?
$select=WorkItemId, WorkItemType, Title, State
&$expand=AssignedTo($select=UserEmail)
&$filter=(Project/ProjectName eq 'Fabrikam Fiber'
AND (WorkItemType eq 'Product Backlog Item' or WorkItemType eq 'Bug' or WorkItemType eq 'Feature')
AND ChangedOn/Date ge 2021-12-16T23:44:15.619Z)
&$orderby=WorkItemType desc
영역을 기준으로 작업 항목 필터링
다음 쿼리를 수정하여 특정 영역 경로 아래의 모든 작업 항목을 나열할 수 있습니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Area/AreaPath eq '{area path}'
&$select=WorkItemId, Title, State
예제 쿼리:
예를 들어 다음 구문은 fabrikam 조직에 대해 정의된 각 프로젝트에 대한 작업 항목 수를 쿼리합니다.
https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$apply=groupby((Project/ProjectName), aggregate($count as Count))
예제 응답:
응답은 다음 5개 프로젝트에 대한 데이터를 반환합니다.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(Project(ProjectName),Count)",
"value":[
{
"@odata.id":null,
"Count":2,
"Project":{
"@odata.id":null,
"ProjectName":"Basic Fabrikam"
}
},
{
"@odata.id":null,
"Count":19,
"Project":{
"@odata.id":null,
"ProjectName":"Demo 11"
}
},
{
"@odata.id":null,
"Count":188,
"Project":{
"@odata.id":null,
"ProjectName":"Fabrikam Fiber"
}
},
{
"@odata.id":null,
"Count":89,
"Project":{
"@odata.id":null,
"ProjectName":"MyFirstProject"
}
},
{
"@odata.id":null,
"Count":2,
"Project":{
"@odata.id":null,
"ProjectName":"MyPublicProject"
}
}
]
}
반복에 따라 작업 항목 필터링
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Iteration/IterationPath eq '{iteration path}'
&$select=WorkItemId, Title, State
예제 쿼리:
예를 들어 다음 구문은 반복 경로=Fabrikam 파이버\Release 1\Sprint 6에서 Fabrikam 파이버 프로젝트에 대한 작업 항목을 쿼리합니다.
https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$select=WorkItemId, WorkItemType, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemType ne '' AND Iteration/IterationPath eq 'Fabrikam Fiber\Release 1\Sprint 6')
예제 응답:
응답은 다음 네 개의 작업 항목에 대한 데이터를 반환합니다.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,WorkItemType,Title,State,Iteration(IterationPath))",
"value":[
{
"WorkItemId":361,
"Title":"Hello World Web Site",
"WorkItemType":"Product Backlog Item",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1126,
"Title":"web site task",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1136,
"Title":"Add a new task with two new tags",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1140,
"Title":"New task - test for Blocked",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
}
]
}
반복에 대한 항목 검색
반복의 첫 날과 반복의 마지막 날 사이에 속하는 지정된 반복에 대한 모든 작업 항목을 검색할 수 있습니다. 여기서 쿼리는 작업 추적 데이터에 포함된 데이터에 의해 제한됩니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Iteration/IterationPath eq '{iteration path}'
and ChangedDate ge Iteration/StartDate
and ChangedDate le Iteration/EndDate
&$select=WorkItemId, Title, State
특정 태그를 포함하는 작업 항목 필터링
작업 항목과 연결할 수 있는 태그 컬렉션이 있으므로 여기서는 모든 연산자가 사용됩니다.
사용 관점에서 형식은 다음과 {Navigation Property}/any(d:d/{Field Name} {operator} {expression})
같습니다. 중괄호({})로 묶이지 않은 항목은 리터럴입니다. 몇 가지 변형이 있습니다. 예를 들어 위 식에 사용된 대로 "d"를 사용할 필요가 없습니다.
이 형식을 따르면 간단하게 유지합니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Tags/any(d:d/TagName eq '{tag name}')
&$select=WorkItemId, Title, State
특정 팀의 작업 항목 필터링
다음 쿼리를 사용하여 특정 팀의 작업 항목을 나열합니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Teams/any(d:d/TeamName eq '{team name}')
&$select=WorkItemId, Title, State
특정 값이 있는 필드를 기반으로 작업 항목 필터링
다음 쿼리는 Was Ever 연산자를 사용하는 작업 항목 쿼리와 유사합니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=WorkItemType eq '{Type}'
and Revisions/any(r:r/ResolvedBy/UserName eq '{User}')
예제 쿼리:
다음 쿼리는 Fabrikam 파이버 프로젝트에 대한 전자 메일이 'fabrikamfiber4@hotmail.com'인 Jamal Hartnett에 할당된 작업 항목을 반환합니다.
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/WorkItems?
$select=WorkItemType, Title, State,
&$expand=AssignedTo($select=UserEmail), Area($select=AreaPath)
&$filter=(WorkItemType ne '' AND State ne '' AND Revisions/any(r:r/AssignedTo/UserEmail eq 'fabrikamfiber4@hotmail.com'))
&$orderby=WorkItemType asc
예제 응답:
응답은 두 개의 작업 항목을 반환합니다.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/Design%20Agile/_odata/v4.0-preview/$metadata#WorkItems(Priority,WorkItemType,Title,State,TagNames,AssignedTo(UserEmail),Area(AreaPath))",
"value":[
{
"Title":"New home page design",
"WorkItemType":"Feature",
"State":"Closed",
"AssignedTo":{
"UserEmail":"fabrikamfiber4@hotmail.com"
},
"Area":{
"AreaPath":"Design Agile"
}
},
{
"Title":"Check performance",
"WorkItemType":"User Story",
"State":"New",
"AssignedTo":{
"UserEmail":"fabrikamfiber4@hotmail.com"
},
"Area":{
"AreaPath":"Design Agile"
}
}
]
}
영역 경로 아래에 할당된 팀 검색
다음 쿼리는 Fabrikam 파이버 프로젝트의 계정 관리 영역 아래 영역 경로에 할당된 팀의 이름을 반환합니다.
> https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/Areas?
> $filter=startswith(AreaPath,'Fabrikam Fiber\Account Management')
> &$select=AreaPath&$expand=Teams($select=TeamName)
>```
The response returns three area paths and the names of several teams assigned to each.
> [!div class="tabbedCodeSnippets"]
```OData
> @odata.context "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#Areas(AreaPath,Teams(TeamName))"
> value
> 0
> AreaPath "Fabrikam Fiber\\Account Management\\Customer Profile"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Fabrikam Team"
> 2
> TeamName "Customer Profile"
> 1
> AreaPath "Fabrikam Fiber\\Account Management\\Shopping Cart"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Shopping Cart"
> 2
> TeamName "Fabrikam Team"
> 2
> AreaPath "Fabrikam Fiber\\Account Management"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Fabrikam Team"
특정 작업 항목의 기록을 반환합니다.
엔터티 집합을 WorkItemRevisions
쿼리하여 작업 항목 기록을 나열합니다. 다음 쿼리는 지정된 작업 항목의 각 수정 버전에 대한 제목, 상태 및 반복 경로 값을 반환합니다.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemRevisions?
$filter=WorkItemId eq {Id}
&$select=WorkItemId, Title, State, Iteration Path
참고 항목
스택 순위 값 변경을 포함하여 작업 항목이 변경되면 수정 내용이 만들어집니다. 기록 데이터에 대한 자세한 내용은 기록 데이터에 필터 적용을 참조 하세요.
예제 쿼리:
예를 들어 다음 구문은 Fabrikam 파이버 프로젝트에서 ID=1145에 대한 수정 버전을 쿼리합니다.
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/WorkItemRevisions?$select=WorkItemId, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemId eq 1145 AND State ne '' AND Revision gt 1)
예제 응답:
응답은 네 가지 수정 버전에 대한 데이터를 반환합니다.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItemRevisions(WorkItemId,Title,State,Iteration(IterationPath))",
"value":[
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Future"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Future"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"Done",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
}
}
]
}