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

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.