다음을 통해 공유


기능 진행률 롤업 샘플 보고서

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

이 문서에서는 완성된 자식 사용자 스토리를 기반으로 기능의 진행률을 표시하는 누적 막대 보고서를 만드는 방법을 보여 있습니다. 보고서에는 지정된 활성 기능 집합에 대한 스토리 포인트 롤업으로 완료된 백분율이 표시됩니다. 예제가 다음 이미지에 표시됩니다.

기능 진행률 누적 가로 막대형 차트 보고서의 스크린샷

롤업 열을 추가하여 백로그에서 비슷한 진행률 표시줄 차트를 볼 수 있습니다. 방법을 알아보려면 표시 롤업 진행률 또는 합계를 참조 하세요.

참고 항목

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

필수 조건

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

샘플 쿼리

기능 진행률이 엔터티를 WorkItems 쿼리하여 현재 진행 상태를 가져옵니다.

참고 항목

필터 또는 보고서 용도로 사용 가능한 속성을 확인하려면 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/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Descendants/any()"
            &"&$select=WorkItemId,Title,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

대체 문자열 및 쿼리 분석

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

  • {organization} - 조직 이름
  • {project}- 프로젝트 간 쿼리에 대한 팀 프로젝트 이름 또는 완전히 생략 /{project}
  • {areapath} - 영역 경로입니다. 예제 형식: Project/Level1/Level2.

쿼리 분석

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

쿼리 파트

설명


$filter=WorkItemType eq 'Feature'

기능을 반환합니다.

and State ne 'Cut'

잘라내기로 표시된 기능을 생략합니다.

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

특정 영역 경로 아래의 작업 항목을 반환합니다. 특정 영역 경로의 반환 항목으로 Area/AreaPath eq '{areapath}' 대체합니다.
팀 이름으로 필터링하려면 필터 문을 Teams/any(x:x/TeamName eq '{teamname})'사용합니다.

and Descendants/any()

하나 이상의 "모든" 하위 항목이 있는 작업 항목을 필터링합니다. 하나 이상의 자식 작업 항목이 있는 모든 기능을 포함합니다. 하위 항목이 없는 경우에도 하위 항목이 있는 모든 작업 항목을 가져오려면 필터 없이 쿼리를 Descendants/any() 실행합니다. 자식 사용자 스토리 any(d:d/WorkItemType eq 'User Story')가 없는 기능을 생략하려면 .

하위 항목이 있고 없는 모든 작업 항목의 경우:

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

하위 항목이 하나 이상 있는 모든 작업 항목의 경우:

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

반환할 속성을 선택합니다.

&$expand=Descendants(

expand Descendants 절의 시작

$apply=filter(WorkItemType eq 'User Story')

하위 항목을 필터링합니다. 사용자 스토리만 포함됩니다(작업 및 버그 생략).

/groupby((StateCategory),

StateCategory별로 롤업을 그룹화합니다. 상태 범주에 대한 자세한 내용은 백로그 및 보드에서 워크플로 상태 및 상태 범주를 사용하는 방법을 참조 하세요.

aggregate(StoryPoints with sum as TotalStoryPoints))

스토리 포인트의 집계 합계입니다.

)

Close Descendants() 절입니다.

팀의 기능 진행률 검토

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

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

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Cut' "
            &"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 Descendants/any() "
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Power Query 편집기 데이터 변환

쿼리는 보고서를 만드는 데 사용하기 전에 확장해야 하는 여러 열을 반환합니다. OData $expand 문을 사용하여 끌어온 엔터티는 잠재적으로 여러 필드가 있는 레코드를 반환합니다. 레코드를 확장하여 엔터티를 해당 필드로 평면화합니다.

기능 진행률 보고서의 경우 다음 변환을 수행해야 합니다.

  • Descendants 열을 두 개의 열로 확장합니다. Descendants.StateCategoryDescendants.TotalStoryPoints
  • 개별 상태 범주를 구분하기 위해 열에 Descendants.StateCategory 피벗 열 변환 적용
  • 피벗된 모든 열에서 null 값을 대체합니다.
  • 완료율을 나타내는 사용자 지정 열을 추가합니다. 피벗 된 상태 열에 null 열이 있는 경우 사용자 지정 열에 오류가 표시됩니다.

방법을 알아보려면 Transform Analytics 데이터의 다음 섹션 을 참조하여 Power BI 보고서를 생성합니다.

참고 항목

이 예제에서 사용자 스토리의 상태 값에는 제안됨, 진행 중완료가 포함됩니다.

쿼리를 닫고 변경 내용 적용

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

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

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

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

    기능 진행률 누적 가로 막대형 차트 보고서에 대한 Power BI 시각화 및 필드 선택 스크린샷

  2. Y축추가 Title 합니다.

  3. X축에 추가하고 PercentComplete 마우스 오른쪽 단추를 클릭하고 합계를 선택합니다.

보고서 예제가 표시됩니다.

샘플 기능 진행률 누적 가로 막대형 차트 보고서의 스크린샷