Azure DevOps 서비스 | Azure DevOps Server | Azure DevOps Server 2022
OData 쿼리 또는 분석 뷰를 통해 분석 데이터를 Power BI 가져온 후 원시 데이터는 보고서를 준비하기 전에 셰이핑해야 하는 경우가 많습니다. 엔터티 필드는 축소된 레코드로 도착하고 날짜는 정수로 표시될 수 있으며 null 값은 계산을 왜곡할 수 있습니다.
이 문서에서는 가장 일반적인 Power Query 변환에 대해 설명합니다.
- 엔터티 열(Area, AssignedTo, Iteration) 및 연결된 작업 항목의 자식 항목 확장
- 상태 범주를 개수 열로 변환
- 10진수 또는 정수 필드를 올바른 데이터 형식으로 변환
- null 값을 0으로 바꾸기
- 계산 열 추가(예: 완료율)
- 가독성을 위해 열 이름 바꾸기
팁 (조언)
이 문서의 뒷부분에서 AI를 사용하여 이 작업을 지원하거나 시작하려면 Azure DevOps MCP Server에 지원 가능한 AI 지원을 참조하세요.
필수 구성 요소
| 범주 | 요구 사항 |
|---|---|
| 액세스 수준 |
-
프로젝트 구성원. - 적어도 기본 액세스. |
| 사용 권한 | 기본적으로 프로젝트 멤버는 분석을 쿼리하고 뷰를 만들 수 있는 권한이 있습니다. 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 다른 필수 구성 요소에 대한 자세한 내용은 사용 권한 및 분석액세스하기 위한 필수 구성 요소를 참조하세요. |
열 확장하기
OData 쿼리가 $expand 사용하여 Area 같은 관련 엔터티를 포함하는 경우 AssignedTo 또는 Iteration 해당 엔터티는 축소된 Record 값으로 Power BI 도착합니다. 각 레코드를 확장하여 개별 필드를 노출해야 합니다.
Power Query 편집기에서:
expand icon레코드(예: 영역)를 표시하는 열에서 확장 단추()를 선택합니다. 원하는 속성(예: AreaName및)을AreaPath선택한 다음 확인을 선택합니다.
참고
선택할 수 있는 속성은 쿼리가 요청한 속성에 따라 달라집니다. 쿼리에서 속성을 지정하지 않은 경우 모든 속성을 사용할 수 있습니다. 메타데이터 세부 정보는 영역, 반복 및 사용자를 참조하세요.
이제 확장된 필드가 테이블에 별도의 열로 표시됩니다.
레코드를 표시하는 모든 열(AssignedTo 및 반복 항목)에 대해 반복합니다.
하위 요소 열 확장
쿼리가 롤업 데이터가 있는 연결된 작업 항목을 반환하는 경우 Descendants 열에는 중첩 테이블이 포함됩니다. 이를 확장하여 State 및 TotalStoryPoints와 같은 필드에 액세스합니다.
하위 항목 열에서 확장 단추를 선택하고 포함할 필드를 선택합니다.
모든 열을 선택하고 확인을 선택합니다.
Power BI 하위 항목 열의 스크린샷, 확장 옵션. 중첩 테이블은 개별 열로 평면화됩니다.
Power BI 하위 항목 열이 확장된 스크린샷.
Descendants.StateCategory 열을 피벗합니다.
하위 항목을 확장한 후 StateCategory 를 피벗하여 상태당 하나의 열을 만들 수 있습니다. 이 열은 백분율 전체 계산에 유용합니다.
Descendants.StateCategory 열 머리글을 선택합니다.
변환>피벗 열을 선택합니다.
피벗 열 대화 상자에서 값을
Descendants.TotalStoryPoints로 설정하고 확인을 선택합니다. Power BI 각 상태 범주에 대해 별도의 열을 만듭니다(예: 프로포즈됨InProgress, Completed).
링크 열 확장
쿼리에 작업 항목 링크가 포함된 경우 링크 열에는 두 단계로 확장해야 하는 중첩 테이블이 포함됩니다.
링크 열에서 확장 단추를 선택하고 모든 필드를 선택합니다.
Power BI 링크 열의 스크린샷, 옵션을 확장합니다. Links.TargetWorkItem 열에서 확장 단추를 선택하고 원하는 대상 속성(예: 제목, 상태, WorkItemType)을 선택합니다.
참고
일 대 다 또는 다 대 다 관계의 경우 링크를 확장하면 원본 작업 항목당 여러 행(각 링크에 대해 하나의 행)이 만들어집니다. 예를 들어 작업 항목 #1이 작업 항목 #2 및 #3에 연결되는 경우 작업 항목 #1에 대해 두 개의 행이 표시됩니다.
열 데이터 형식 변환
LeadTimeDays 및 CycleTimeDays를 정수로 변환
Analytics는 LeadTimeDays 및 CycleTimeDays를 소수로 반환하며 (예: 10½일을 10.5로) 제공합니다. 대부분의 리드/주기 시간 보고서는 가장 가까운 날로 반올림되므로 이러한 열을 정수로 변환하세요. 1보다 작은 값은 0이 됩니다.
Power Query Editor Transform 탭을 선택합니다.
LeadTimeDays열 머리글을 선택한 후, 데이터 형식>전체 숫자를 선택합니다.
CycleTimeDays에 대해 반복하세요.
CompletedDateSK를 날짜 필드로 변환
Analytics는 CompletedDateSK를 YYYYMMDD 형식의 정수로 저장합니다(예: 2022년 7월 1일의 경우 20220701). 정수에서 텍스트로, 텍스트를 날짜로 변환하는 두 단계로 적절한 날짜 형식으로 변환합니다.
CompletedDateSK열 머리글을 선택합니다.데이터 형식>텍스트를 선택합니다. 열 형식 변경 대화 상자가 나타나면 새 단계 추가를 선택합니다.
동일한 열을 선택한 상태에서 데이터 형식>날짜를 선택합니다. 열 형식 변경 대화 상자에서 새 단계 추가를 다시 선택합니다.
null 값 대체하기
스토리 포인트 또는 남은 작업 시간 같은 필드에는 값을 입력하지 않은 경우 null 값이 포함될 수 있습니다. Null은 계산에서 오류를 발생합니다(예: 분모 용어가 null인 경우 백분율 완성 수식이 실패함). 계산 열을 만들기 전에 0으로 대체합니다.
- 열 머리글을 선택합니다.
- 변환>값 바꾸기를 선택합니다.
-
값 바꾸기 대화 상자에서
null에 을(를) 입력하고0에 을(를) 입력합니다. - 확인을 선택합니다.
- null을 포함할 수 있는 각 열에 대해 반복합니다.
계산된 열 만들기
완료 백분율 열 추가
중요합니다
이 열을 추가하기 전에 피벗된 상태 열의 모든 null 값을 바꿉니다(이전 섹션 참조). null 용어를 사용하면 수식이 오류를 반환합니다.
열 추가>사용자 지정 열 선택.
PercentComplete입력 하고 다음 수식을 입력합니다.= [Completed]/([Proposed]+[InProgress]+[Resolved]+[Completed])
참고
작업 항목에 해결된 범주에 매핑된 상태가 없는 경우 수식에서 생략
[Resolved]합니다.확인을 선택합니다.
새 열을 선택한 상태에서데이터 형식>백분율>을 선택합니다.
열 이름 바꾸기
열을 확장하고 변환한 후에는 보고서의 시각적 자료에서 쉽게 읽을 수 있도록 이름을 바꿉니다.
열 머리글을 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택합니다.
새 레이블을 입력하고 Enter 키를 누릅니다.
쿼리를 닫고 변경 내용 적용
모든 데이터 변환을 완료하면 홈 메뉴에서 닫기 및 적용을 선택합니다. 이 작업은 쿼리를 저장하고 Power BI Report 탭으로 돌아갑니다.
AI를 사용하여 Power BI 분석 데이터 변환
Azure DevOps MCP Server 구성하는 경우 AI 도우미를 사용하여 자연어를 사용하여 Power BI Analytics 보고서에 대한 OData 추세 및 스냅샷 쿼리를 작성하고 최적화할 수 있습니다.
예시 프롬프트
| 과업 | 예제 프롬프트 |
|---|---|
| 날짜 범위별 버그 추세 | Write an OData trend query that shows the daily bug count by state over the last 30 days in <ProjectName>. |
| 스프린트 스냅샷 | Create an OData query against WorkItemSnapshot that shows work item counts grouped by date for the current sprint in <ProjectName>. |
| 반복을 통해 필터링 | Generate an OData trend query that uses the iteration start and end dates from <IterationName> to show story point burndown in <ProjectName>. |
| 보드 컬럼 추세 | Write an OData query against WorkItemBoardSnapshot to track work items by board column over the past two weeks in <ProjectName> in the <OrganizationName> organization. |
| 성능 최적화 | My WorkItemSnapshot trend query for <ProjectName> is timing out. Suggest specific date filters and aggregation to reduce the row count without losing the key metrics. |
| 스프린트 비교 | Create an OData trend query that compares bug counts between <SprintName> and the previous sprint in <ProjectName> in the <OrganizationName> organization. |
| 남은 작업 추세 | Write an OData trend query that shows the daily sum of remaining work grouped by Area Path for the current iteration in <ProjectName>. |
| 상태 변화 감지 | Create an OData snapshot query that tracks how many work items moved from Active to Resolved each day over the past <NumberOfDays> days in <ProjectName>. |
| 범위 변경 분석 | Generate an OData trend query that shows the daily count of user stories added or removed from <SprintName> by comparing WorkItemSnapshot data in <ProjectName>. |
팁 (조언)
Visual Studio Code 사용하는 경우 agent 모드는 분석 기반 Power BI 보고서에 대한 OData 추세 쿼리를 작성하고 반복하는 데 특히 유용합니다.