Выпуск примеров запросов и отчетов об освобождении

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

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

Снимок экрана: отчет о сгоревшего кластеризованного столбца в Power BI.

Сгоревшие диаграммы имеет смысл только в том случае, если вы планируете работу в течение периода времени диаграммы. В противном случае, если вы планируете на основе спринта по спринту, вы не увидите стандартное сгорание. В этих случаях диаграмма сжигания имеет больше смысла, чтобы увидеть, как прогресс выполняется с течением времени.

Внимание

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

Дополнительные сведения о сгорении и сожжении см . в руководстве по настройке мини-приложения "Сгорание" или "Сгорание" и "Сгорание".

Примечание.

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

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

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

Запросы в этом разделе показывают, как создавать диаграммы сжигания рабочих элементов на основе исторических данных. Все эти запросы указывают WorkItemSnapshot набор сущностей.

Примечание.

Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для Azure Boards. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из Property значенийEntityType, доступных в разделе EntitySetили NavigationPropertyBinding Path значениях. Каждое 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, 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
  • {tag} — тег, представляющий выпуск. Все рабочие элементы, помеченные как {tagname} включенные в отчет
  • {startdate}— Дата начала отчета об сожжении с форматом: YYYY-MM-DDZ Например: 2022-04-01Z представляет 2022-апрель-01. Не заключайте в кавычки.
  • {enddate} — Дата окончания отчета о сожжении.

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

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

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

Description

$apply=filter(WorkItemType eq 'User Story'

Включение пользовательских историй в сожжение.

and StateCategory ne 'Completed'

Фильтрует завершенные элементы. Дополнительные сведения о категориях состояний см. в статье о том, как состояния рабочего процесса и категории состояний используются в невыполненных работах и советах.

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

Включите только истории пользователей в определенный путь области, заменяющий '{areapath}'.
Чтобы отфильтровать по имени команды, используйте инструкцию Teams/any(x:x/TeamName eq '{teamname})'фильтра.

and Tags/any(x:x/TagName eq '{tagname}').

Указывает метку тега, представляющую выпуск для сжигания, и включить все рабочие элементы, помеченные {tagname} в отчет.

and DateValue ge {startdate}

Начните сгореть или после указанной даты. Пример: 2019-04-01Z представляет 2019-апрель-01.

and DateValue le {enddate}

Начните сгореть до указанной даты или до указанной даты. Тот же формат, что и {startdate}.

)

Закрыть filter() предложение.

/groupby (

Предложение Start groupby() .

(DateValue, State, Area/AreaPath),

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 StateCategory ne 'Completed' "
            &"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 Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Журналы пользователей burndown с моментальным снимком каждую пятницу

Использование еженедельного моментального снимка уменьшает объем данных, извлекаемых в Power BI, и повышает производительность запросов.

Скопируйте и вставьте следующий запрос 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Обжигание пользовательских историй на основе области и пути итерации

В некоторых организациях используются пути итерации, чтобы пометить истории для выпуска. Например, у них может быть путь итерации MyProject\Release1. В следующем запросе показано, как выбрать пользовательские истории по пути итерации.

Скопируйте и вставьте следующий запрос 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Создание пользовательских историй с пользовательским значением поля

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

Вам потребуется заменить оба {customfieldname} и {releasevalue} в запросе. Чтобы определить имя настраиваемого поля, см . справочник по метаданным для Azure Boards, пользовательские свойства. НапримерCustom_Milestone, вы замените {customfieldname} имя настраиваемого свойства.

Скопируйте и вставьте следующий запрос 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 StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(Необязательно) Переименование запроса

Вы можете переименовать метку запроса по умолчанию, query1, в что-то более понятное. Просто введите новое имя в области параметров запроса.

Снимок экрана: параметры меню запроса Power BI, переименование запроса.

Разверните столбцы в Редактор Power Query

Перед созданием отчета необходимо развернуть столбцы, возвращающие записи, содержащие несколько полей. В этом экземпляре необходимо развернуть следующие записи:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

Сведения о том, как развернуть рабочие элементы, см. в разделе "Аналитика преобразования" для создания отчетов Power BI.

Закройте запрос и примените изменения

Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.

Снимок экрана: параметр Редактор Power Query Закрыть и применить.

Создание кластеризованной диаграммы столбцов

  1. В Power BI выберите кластеризованную гистограмму в разделе "Визуализации".

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

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

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

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

В примере отчета отображаются данные о количестве историй и суммы или точек истории.

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