다음을 통해 공유


스프린트 번다운 샘플 보고서

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

스프린트 번다운 차트는 팀이 스프린트 계획에서 얼마나 잘 실행되고 있는지 모니터링하는 데 유용합니다. 여러 기본 제공 차트 및 대시보드 위젯은 스프린트 번다운 모니터링을 지원합니다. 스프린트 번다운 구성 및 모니터링을 참조하세요.

그러나 이 문서에 제공된 쿼리를 사용하여 Analytics 및 Power BI를 사용하여 스프린트 번다운 차트를 사용자 지정할 수 있습니다. 다음 예제에서는 사용자 스토리 및 해당 상태의 번다운을 보여줍니다.

Power BI Sprint 번다운 클러스터형 세로 막대형 차트 보고서의 스크린샷.

Important

  • 영역 경로를 삭제하거나 반복 경로를 다시 구성하면 되돌릴 수 없는 데이터가 손실됩니다. 예를 들어 영역 경로가 변경된 팀의 번다운 및 번업 위젯 차트, 스프린트 번다운 및 속도 차트는 정확한 데이터를 표시하지 않습니다. 기록 추세 차트는 각 작업 항목에 대해 시간에 정의된 대로 영역 경로반복 경로를 참조합니다. 삭제된 후에는 이러한 경로에 대한 기록 데이터를 검색할 수 없습니다.
  • 작업 항목에서 더 이상 사용되지 않는 영역 및 반복 경로만 삭제할 수 있습니다.

번다운 및 번업, 번다운 및 번업 지침에 대한 자세한 내용을 보려면

참고 항목

이 문서에서는 OData 쿼리를 사용하여 샘플 보고서 개요를 읽고 Power BI에 대한 기본적인 이해를 가지고 있다고 가정합니다 .

필수 조건

  • 액세스: 최소한 기본 액세스 권한이 있는 프로젝트의 멤버여야 합니다.
  • 사용 권한: 기본적으로 프로젝트 멤버는 분석을 쿼리하고 뷰를 만들 수 있는 권한이 있습니다.
  • 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 기타 필수 구성 요소에 대한 자세한 내용은 Analytics에 액세스하기 위한 사용 권한 및 필수 구성 요소를 참조 하세요.

샘플 쿼리

번다운 차트에서는 기록 데이터를 가져오기 위해 엔터티 집합을 쿼리 WorkItemSnapshot 해야 합니다.

참고 항목

필터 또는 보고서 용도로 사용 가능한 속성을 확인하려면 Azure Boards에 대한 메타데이터 참조를 참조 하세요. 에서 사용할 수 있는 값 또는 아래 값을 Property 사용하여 쿼리를 EntityType 필터링하거나 NavigationPropertyBinding Path 속성을 반환할 수 있습니다 EntitySet. 각각 EntitySet 은 .에 EntityType해당합니다. 각 값의 데이터 형식에 대한 자세한 내용은 해당 EntityType값에 대해 제공된 메타데이터를 검토하세요.

영역 경로 및 현재 반복에 대한 번다운 사용자 스토리

다음 Power BI 쿼리를 복사하여 데이터>빈 쿼리 가져오기 창에 직접 붙여넣습니다. 자세한 내용은 OData 쿼리를 사용하는 샘플 보고서 개요를 참조 하세요.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

대체 문자열 및 쿼리 분석

다음 문자열을 값으로 바꿉니다. 대괄호를 대체에 {} 포함하지 마세요. 예를 들어 조직 이름이 "Fabrikam"{organization}Fabrikam{Fabrikam}인 경우 .

  • {areapath} - 영역 경로입니다. 예제 형식: Project\Level1\Level2.

쿼리 분석

다음 표에서는 쿼리의 각 부분을 설명합니다.

쿼리 파트

설명


$apply=filter(

start filter()

WorkItemType eq 'User Story'

사용자 스토리의 번다운

and startswith(Area/AreaPath,'{areapath}')

특정 영역 경로 아래의 작업 항목입니다. 특정 영역 경로의 반환 항목으로 Area/AreaPath eq '{areapath}' 대체합니다.

팀 이름으로 필터링하려면 필터 문을 사용합니다. Teams/any(x:x/TeamName eq '{teamname})'

and StateCategory ne 'Completed'

완료된 항목을 필터링합니다. 상태 범주에 대한 자세한 내용은 백로그 및 보드에서 워크플로 상태 및 상태 범주를 사용하는 방법을 참조하세요.

and DateValue ge Iteration/StartDate

반복 시작 시 추세를 시작합니다.

and DateValue le Iteration/EndDate

반복 끝의 끝 추세입니다.

and Iteration/StartDate le now()

현재 반복을 선택합니다.

and Iteration/EndDate ge now()

현재 반복 선택

)

close filter()

/groupby(

groupby() 시작

(DateValue, State, WorkItemType, Priority, Area/AreaPath, Iteration/IterationPath),

DateValue(추세에 사용됨) 및 보고하려는 모든 필드를 기준으로 그룹화

aggregate($count as Count, StoryPoints with sum as TotalStoryPoints)

사용자 스토리 수 및 스토리 포인트 합계로 집계

)

groupby() 닫기

팀 및 현재 반복에 대한 번다운 사용자 스토리

이 쿼리는 영역 경로가 아닌 팀 이름으로 필터링하는 것을 제외하고 위에서 사용한 쿼리와 동일합니다.

다음 Power BI 쿼리를 복사하여 데이터>빈 쿼리 가져오기 창에 직접 붙여넣습니다. 자세한 내용은 OData 쿼리를 사용하는 샘플 보고서 개요를 참조 하세요.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

1년 시작 이후 모든 스프린트에 대한 번다운 사용자 스토리

단일 보고서에서 모든 스프린트의 번다운을 볼 수 있습니다. 이러한 쿼리는 2022년 초부터 모든 스프린트에 대해 스프린트 번다운과 스토리 포인트별로 끌어오고 있습니다.

다음 Power BI 쿼리를 복사하여 데이터>빈 쿼리 가져오기 창에 직접 붙여넣습니다. 자세한 내용은 OData 쿼리를 사용하는 샘플 보고서 개요를 참조 하세요.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate ge 2022-01-01Z "
        &") "
        &"/groupby( "
            &"(DateValue,Iteration/EndDate,Area/AreaPath,Iteration/IterationPath,State,WorkItemType,Priority,AreaSK), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

번다운 작업 및 남은 작업 시간

다음 Power BI 쿼리를 복사하여 데이터>빈 쿼리 가져오기 창에 직접 붙여넣습니다. 자세한 내용은 OData 쿼리를 사용하는 샘플 보고서 개요를 참조 하세요.

Doc-ready Power BI Query (anonymized)
let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"startswith(Area/AreaPath,'{project}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
            &"and WorkItemType eq 'Task' "
        &") "
            &"/groupby( "
            &"(DateValue,State,WorkItemType,Activity,Priority,Area/AreaPath,Iteration/IterationPath,AreaSK), "
            &"aggregate($count as Count, RemainingWork with sum as TotalRemainingWork) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(선택 사항) 쿼리 이름 바꾸기

기본 쿼리 레이블인 Query1의 이름을 좀 더 의미 있는 것으로 바꿀 수 있습니다. 쿼리 설정 창에서 새 이름을 입력하기만 하면 됩니다.

Power BI 쿼리 메뉴 옵션, 쿼리 이름 바꾸기 스크린샷

Power Query 편집기 열 확장

보고서를 만들기 전에 여러 필드가 포함된 레코드를 반환하는 열을 확장해야 합니다. 이 경우 다음 레코드를 확장하려고 합니다.

  • Area
  • Iteration
  • AssignedTo

작업 항목을 확장하는 방법을 알아보려면 분석 데이터 변환을 참조 하여 Power BI 보고서를 생성합니다.

쿼리를 닫고 변경 내용 적용

모든 데이터 변환을 완료한 후 홈 메뉴에서 닫기 및 적용 을 선택하여 쿼리를 저장하고 Power BI의 보고서 탭으로 돌아갑니다.

Power Query 편집기 닫기 및 적용 옵션의 스크린샷

누적 세로 막대형 차트 보고서 만들기

  1. Power BI의 시각화에서 누적 세로 막대형 차트 보고서를 선택합니다.

    스프린트 번다운 보고서에 대한 Power BI 시각화 및 필드 선택 스크린샷

  2. X축추가하고 DateValue 마우스 오른쪽 단추를 클릭하고 선택DateValue하지 않고Date Hierarchy

  3. Y축추가 Count 합니다.

  4. Y축추가 State 합니다.

스토리 포인트와 스토리 개수 모두에 번다운을 표시하는 예제 보고서입니다.

샘플 Power BI Sprint 번다운 클러스터형 세로 막대형 차트 보고서의 스크린샷.