추세 데이터 쿼리

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

데이터의 추세를 검토하고 기간 경과 비교를 하는 것은 보고 및 데이터 분석의 중요한 측면입니다. Analytics는 이러한 기능을 지원합니다.

참고 항목

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 버전 관리를 참조 하세요.

추세 데이터는 WorkItemSnapshot 및 WorkItemBoardSnapshot 엔터티 집합에 노출됩니다. 생성된 날부터 오늘까지 모든 작업 항목이 매일 존재할 수 있도록 생성됩니다. 1년 전에 만든 작업 항목이 하나뿐인 조직의 경우 이 엔터티에는 365개의 행이 있습니다. 대규모 프로젝트의 경우 이러한 엔터티는 클라이언트 도구와 함께 사용하기에 실용적이지 않습니다.

솔루션이란? 집계 확장을 사용합니다.

이 문서에서는 다음을 알아봅니다.

  • 추세 데이터에 대한 기본 쿼리를 생성하는 방법

OData 집계 확장을 사용하여 보고에 도움이 되는 Azure DevOps에서 집계된 데이터를 반환할 수 있습니다. 예를 들어 3월의 버그 추세를 표시할 수 있습니다. 버그 추세는 프로젝트를 관리하는 데 있어 일반적이고 중요한 부분이므로 즉시 적절한 사용을 할 수 있습니다.

참고 항목

이 문서에 표시된 예제는 Azure DevOps Services URL을 기반으로 하며, Azure DevOps Server URL로 대체해야 합니다.

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

추세 데이터에 대한 기본 쿼리 생성

WorkItemSnapshot 테이블을 효과적으로 쿼리하는 데 필요한 몇 가지 기본 요구 사항이 있습니다.

  • 날짜별로 데이터를 필터링합니다.
  • 집계는 최소한 날짜별로 그룹화되어야 합니다. 그렇지 않으면 응답에 경고가 표시됩니다.

버그 추세 보고서를 만드는 쿼리는 다음 예제와 같습니다.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue,State), aggregate($count as Count))
  &$orderby=DateValue

다음 예제와 유사한 결과를 반환합니다.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 2666
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 51408
    }
  ]
}

이 쿼리는 최대 31 * (number of bug states). 기본 버그에는 다음 세 가지 상태가 있습니다.

  • 활성화
  • 해결됨
  • 닫힘

이 쿼리는 실제로 수천 개의 레코드가 존재하더라도 93개의 행을 반환합니다. 훨씬 더 압축된 형식의 반환 데이터를 제공합니다.

이 예제의 변형을 살펴보겠습니다. 반복 또는 한 번 반복으로 시작하고 다른 반복으로 끝나는 릴리스에 대한 버그 추세를 확인하려고 합니다.

해당 쿼리를 생성하려면 다음 예제를 수행합니다.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

다음 예제와 유사한 결과를 반환합니다.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 320
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 38
    }
  ]
}

이 쿼리에는 두 가지 주요 차이점이 있습니다. 데이터를 특정 반복으로 필터링하는 필터 절을 추가했으며, 이제 날짜가 반복 시작 날짜 및 종료 날짜와 하드 코딩된 날짜와 비교됩니다.

참고 항목

스냅샷 테이블의 쿼리에서 집계를 사용하지 않으면 응답에 "지정된 쿼리에 모든 쿼리에 권장되는 $select 또는 $apply 절이 포함되지 않습니다."라는 경고가 표시됩니다.