Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
В этой статье показано, как создать накопительный отчет с гистограммами для отображения прогресса выполнения возможностей на основе завершенных дочерних пользовательских историй. В отчете отображается процент завершения с помощью свертки "Точки истории" для заданного набора активных функций. Пример показан на следующем рисунке.
Вы можете просматривать аналогичные диаграммы прогресса из бэклога, добавив итоговый столбец. Смотрите Как отобразить ход выполнения свертки или итоги для получения инструкций.
Примечание.
В этой статье предполагается, что вы прочитали Обзор примеров отчетов с использованием запросов OData и имеете базовое представление о Power BI.
Категория | Требования |
---|---|
Уровни доступа |
-
член проекта. — По крайней мере базовый доступ . |
Права доступа | По умолчанию члены проекта имеют разрешение делать запросы к аналитике и создавать представления. Дополнительные сведения о других предварительных требованиях для включения служб и функций и общих действий отслеживания данных см. в разделе "Разрешения и предварительные требования для доступа к аналитике". |
Примеры запросов
Запрос хода выполнения функции у 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
.
Разбивка запросов
В следующей таблице описана каждая часть запроса.
Часть запроса
Description
$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))
Суммарная сумма точек истории.
)
Закрыть 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.StateCategory
иDescendants.TotalStoryPoints
- Применение преобразования столбца сводной таблицы к
Descendants.StateCategory
столбцу для разделения отдельных категорий состояний - Замените значения NULL во всех сводных столбцах.
- Добавьте настраиваемый столбец для представления процента завершения. В пользовательском столбце будут отображаться ошибки, если в сводных столбцах State есть нулевые столбцы.
Чтобы узнать, как выполнять эту задачу, см. следующие разделы в Преобразование данных аналитики для создания отчетов Power BI:
- Разверните столбец «Потомки».
- Pivot Descendants.Столбец StateCategory.
- Замените нулевые значения.
- Создание вычисляемого столбца процентного выполнения
Примечание.
В этом примере значения состояния для истории пользователя включают предлагаемое, "Выполняется" и "Завершено".
Закройте запрос и примените изменения
Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.
Создайте отчет по столбчатой диаграмме с накоплением
В Power BI выберите Линейчатую диаграмму с накоплением в разделе "Визуализации".
Добавьте
Title
в ось Y.Добавьте
PercentComplete
в ось X, щелкните правой кнопкой мыши и выберите "Сумма".
Пример отчета отображается.