Поделиться через


Примеры отчетов об сжигании спринта

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Диаграммы спринта сгорания полезны для отслеживания того, насколько хорошо команда выполняет план спринта. Несколько встроенных диаграмм и мини-приложений панели мониторинга поддерживают очистку спринта мониторинга. См. статью "Настройка и мониторинг спринта сгорание".

Однако можно настроить диаграмму спринта сгоревшего с помощью Аналитики и Power BI с помощью запросов, указанных в этой статье. В следующем примере показано сгорание пользовательских историй и их состояний.

Снимок экрана: отчет о кластеризованной диаграмме с помощью диаграммы Спринта Power BI.

Внимание

  • Удаление путей области или перенастройка путей итерации приводит к необратимой потере данных. Например, диаграммы мини-приложений сгореть и спринта, а также диаграммы скорости для команд с измененными путями области не будут отображать точные данные. Исторические диаграммы трендов ссылаются на путь области и путь итерации, так как они были определены во время каждого рабочего элемента. После удаления вы не сможете получить исторические данные для этих путей.
  • Вы можете удалять только области и пути итерации, которые больше не используются любыми рабочими элементами.

Дополнительные сведения о сожжении и сожжении, а также рекомендации по бернуну и сожжению.

Примечание.

В этой статье предполагается, что вы читаете обзор примеров отчетов с помощью запросов OData и имеет базовое представление о Power BI.

Необходимые компоненты

Примеры запросов

Для получения исторических данных требуется выполнение запросов к набору WorkItemSnapshot сущностей.

Примечание.

Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для Azure Boards. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из Property значенийEntityType, доступных в разделе EntitySetили NavigationPropertyBinding Path значениях. Каждое EntitySet соответствует .EntityType Дополнительные сведения о типе данных каждого значения см. в метаданных, предоставленных для соответствующего EntityTypeзначения.

Истории пользователей burndown для пути к области и текущей итерации

Скопируйте и вставьте следующий запрос 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.

Разбивка запросов

В следующей таблице описана каждая часть запроса.

Часть запроса

Description


$apply=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()

Выбор текущей итерации

)

Закрыть фильтр()

/groupby(

Запуск groupby()

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

Группа по DateValue (используется для тренда) и все поля, о которые вы хотите сообщить

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

Агрегирование по количеству пользовательских историй и сумме точек истории

)

Close 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

Истории пользователей burndown для всех спринтов с начала года

Может потребоваться просмотреть сгорание всех спринтов в одном отчете. Эти запросы извлекают спринт сгорание и их по точкам истории, для всех спринтов с начала 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 для отчета о спринте Burndown.

  2. Добавьте DateValue в оси X, щелкните правой кнопкой мыши и выберите DateValue, а неDate Hierarchy

  3. Добавьте Count в ось Y.

  4. Добавьте State в ось Y.

Пример отчета, в котором отображаются данные о точках истории и количестве историй.

Снимок экрана: пример отчета о кластеризованной диаграмме с спринтом Power BI.