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


Перечень связанных рабочих элементов с примерами типовых запросов и отчетов

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 'Closed' and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') " 
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Child' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,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 'Closed' and State ne 'Removed'

Опустить функции, состояние которых имеет значение "Закрыто" или "Удалено".

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

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

&$select=WorkItemId,Title,WorkItemType,State,AreaSK

Выберите поля для возврата.

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),

Укажите поля, используемые для расширения AssignedToи IterationArea сущностей.

Links(

Links Разверните сущность.

$filter=LinkTypeName eq 'Child'

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

and TargetWorkItem/WorkItemType eq 'User Story';

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

$select=LinkTypeName;

Выберите свойство LinkTypeName, которое нужно вернуть.

$expand=TargetWorkItem($select=WorkItemType, WorkItemId, Title, State)

Выберите свойства связанного рабочего элемента, которые нужно вернуть.

)

Закройте пункт Links().

Скопируйте и вставьте следующий запрос Power BI непосредственно в окно Получить данные>Пустой запрос. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
        &"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Вернуть связанные пользовательские истории, отфильтрованные командами

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

Скопируйте и вставьте следующий запрос Power BI непосредственно в окно Получить данные>Пустой запрос. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and State ne 'Closed' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
                &"Links( "
                    &"$filter=LinkTypeName eq 'Related' "
                        &"and TargetWorkItem/WorkItemType eq 'User Story'; "
                    &"$select=LinkTypeName; "
                    &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
                &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Скопируйте и вставьте следующий запрос Power BI непосредственно в окно Импорт данных>Пустой запрос. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".

let
    Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
            &"and State ne 'Closed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug') "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath), "
            &"Links( "
                &"$filter=LinkTypeName eq 'Duplicate' "
                &"and TargetWorkItem/WorkItemType eq 'Bug'; "
                    &"$select=LinkTypeName; "
                &"$expand=TargetWorkItem($select=WorkItemType,WorkItemId,Title,State) "
            &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Скопируйте и вставьте следующий запрос Power BI непосредственно в окно Получение данных>Пустой запрос. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов OData".

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
        &"$filter=WorkItemType eq 'Bug' "
                &"and State ne 'Closed' "
                &"and startswith(Area/AreaPath,'{areapath}') "
                &"and not (Links/any(x:x/LinkTypeName eq 'Duplicate' and x/TargetWorkItem/WorkItemType eq 'Bug')) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

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

Преобразование данных в Редактор Power Query

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

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

Чтобы узнать, как развернуть рабочие элементы, см. Преобразование данных аналитики для создания отчетов Power BI.

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

После развертывания столбцов вы, возможно, захотите переименовать одно или несколько полей. Например, можно переименовать столбец с AreaPath на Area Path. Вы можете переименовать их в представлении таблицы данных или позже при создании отчета. Сведения о том, как это сделать, см. в разделе "Переименовать поля столбцов".

В этом примере были переименованы следующие поля:

Исходное имя поля Переименовать
Links.TargetWorkItem.ID Идентификатор целевого объекта
ТипСвязиНазвание Тип ссылки
Ссылки.ЦелевойРабочийЭлемент.Состояние Целевое состояние
Связи.ЦелевойРабочийЭлемент.Заголовок Название целевого объекта

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

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

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

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

  1. В Power BI выберите отчет "Таблица " в разделе "Визуализации".

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

  2. Добавьте следующие поля в порядок, указанный в столбцах:

    • ID, щелкните правой кнопкой мыши и выберите Не суммировать
    • Штат
    • Заголовок
    • Идентификатор целевого объекта, щелкните правой кнопкой мыши и выберите Не выполнять сводку
    • Тип ссылки
    • Целевое состояние
    • Название целевого объекта

Пример отчета отображается.

Снимок экрана: примеры «родительских-дочерних» ссылок в отчете о функциях и пользовательских историях.