Пример отчета о длительности задачи конвейера

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Сколько времени требуется для выполнения различных задач? В этой статье приведены запросы, из которых можно создать отчет для определенного конвейера и его задач. Например, на следующем рисунке перечислены 50-е, 80-е и 95-е процентиль в секундах для всех задач, выполненных для определенного конвейера с 1 сентября по 15 декабря 2022 года.

Снимок экрана: отчет о тренде длительности задач Power BI Pipelines.

Внимание

Интеграция Power BI и доступ к веб-каналуOData службы Аналитики общедоступны для Azure DevOps Services и Azure DevOps Server 2020 и более поздних версий. Примеры запросов, указанные в этой статье, допустимы только для Azure DevOps Server 2020 и более поздних версий, и зависят от версии 3.0-preview или более поздней версии. Мы рекомендуем вам использовать эти запросы и предоставлять нам отзывы.

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

  • Чтобы просмотреть данные аналитики и запросить службу, необходимо быть членом проекта с базовым доступом или большим доступом. По умолчанию все члены проекта предоставляют разрешения для запроса аналитики и определения представлений Аналитики.
  • Дополнительные сведения о других предварительных требованиях для включения служб и функций и общих действий по отслеживанию данных см. в статье "Разрешения и предварительные требования для доступа к аналитике".

Примечание.

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

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

Запрос набора сущностей для возврата сведений PipelineRunActivityResults? о длительности задачи.

Примечание.

Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для Azure Pipelines. Вы можете отфильтровать запросы или возвращать свойства с помощью любого из 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/PipelineRunActivityResults?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and PipelineRunCompletedOn/Date ge {startdate} "
                &"and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
        &"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
        &") "
            &"/compute( "
                &"percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds, "
                &"percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds, "
            &"percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds) "
                &"/groupby( "
            &"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName)) "
        &"&$orderby=TaskDuration50thPercentileInSeconds desc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Строки подстановки и разбивка запросов

Замените следующие строки значениями. Не включайте скобки в подстановку {} . Например, если вашей организации присвоено имя Fabrikam, замените {organization} на Fabrikam, а не {Fabrikam}.

  • {organization} — Название организации
  • {project} — Имя проекта группы
  • {pipelinename} — Имя конвейера. Пример: Fabrikam hourly build pipeline
  • {startdate} — Дата начала отчета. Формат: ГГГГ-ММ-ДДЗ. Пример: 2021-09-01Z представляет 1 сентября 2021 г. Не заключайте в кавычки или скобки и используйте две цифры как для месяца, так и для даты.

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

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

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

Description


$apply=filter(

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

Pipeline/PipelineName eq '{pipelinename}'

Возвращаемый конвейер выполняется для указанного конвейера.

and PipelineRunCompletedOn/Date ge {startdate}

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

and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded')

Возвращайте результаты задачи только для успешных или частично успешных запусков конвейера.

and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1)

Опустить запуски конвейера, которые были отменены, пропущены или отменены.

)

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

/compute(

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

percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds,

Для каждой задачи вычислите 50-й процентиль длительности задач для всех задач, соответствующих критериям фильтра.

percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds,

Для каждой задачи вычислите 80-й процентиль длительности задач для всех задач, соответствующих критериям фильтра.

percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds)

Для каждой задачи вычислите 95-й процентиль длительности задач для всех задач, соответствующих критериям фильтра.

/groupby(

groupby() Запустите предложение.

(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName))

Группируйте по задаче выполнения конвейера и вычисляемой 50-й продолжительности задачи процентиля, 80-й продолжительности задачи процентиля и 95-й продолжительности задачи процентиля.

&$orderby=TaskDuration50thPercentileInSeconds desc

Упорядочение ответа по задаче с наибольшим длительностью 50-й процентиль.

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

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

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

Изменение типа данных столбца

В меню "Преобразование" измените тип данных для следующих столбцов, чтобы Decimal Number**. узнать, как преобразовать тип данных столбца.
- TaskDuration80thPercentileInSeconds - TaskDuration80thPercentileInSeconds - TaskDuration95thPercentileInSeconds.

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

Можно переименовать поля столбцов. Например, можно переименовать следующие столбцы, чтобы они были более понятными для отображения. Сведения о том, как это сделать, см. в разделе "Переименовать поля столбцов".

Исходное имя поля Переименованное поле
TaskDisplayName Имя задачи
TaskDuration50thPercentileInSeconds 50-й процентиль
TaskDuration80thPercentileInSeconds 80-й процентиль
TaskDuration95thPercentileInSeconds 95-й процентиль

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

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

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

Создание отчета таблицы

  1. В Power BI в разделе "Визуализации" выберите отчет "Таблица ". Поля были переименованы, как указано в разделе "Переименовать поля столбцов ".

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

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

    • Имя задачи
    • 50-й процентиль
    • 80-й процентиль
    • 95-й процентиль
  3. Чтобы изменить заголовок отчета, выберите значок "Формат визуальной кисти" в области "Визуализации ", выберите "Общие", разверните "Заголовок" и замените существующий текст.

На следующем рисунке показана часть результирующего отчета.

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