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

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

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

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

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

Внимание

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

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

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

Примечание.

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

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

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

Примечание.

Сведения о доступных свойствах для фильтрации или отчета см . в справочнике по метаданным для 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/PipelineRuns?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds)) "
    ,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 CompletedDate ge {startdate}

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

and (SucceededCount eq 1 or PartiallySucceededCount eq 1)

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

)

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

/compute(

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

percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds,

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

percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds,

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

percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds)

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

/groupby(

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

(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds))

Сгруппировать ответ по Duration50thPercentileInSeconds, Duration80thPercentileInSecondsи Duration95thPercentileInSeconds завершить groupby предложение.

Длительность возврата процентиля для указанного идентификатора конвейера

Конвейеры можно переименовать. Чтобы убедиться, что отчеты Power BI не прерываются при изменении имени конвейера, используйте идентификатор конвейера, а не имя конвейера. Идентификатор конвейера можно получить из URL-адреса страницы выполнения конвейера.

https://dev.azure.com/{organization}/{project}/_build?definitionId= {pipelineid}

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"PipelineId  eq {pipelineid} "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Возвращать длительность процентиля для указанного конвейера, фильтруйте по ветви

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

  • Развернитесь Branch в Branch.BranchName.
  • Добавьте поле Branch.BranchName в ось X.

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"Pipeline/PipelineName eq '{pipelinename}' "
                &"and CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
        &") "
        &"/compute( "
            &"percentile_cont(TotalDurationSeconds, 0.5, BranchSK) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8, BranchSK) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95, BranchSK) as Duration95thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds, Branch/BranchName)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Возвращать длительность процентиля для всех конвейеров проекта

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

  • Развернитесь Pipeline в Pipeline.PipelineName.
  • Добавьте поле PIpeline.PipelineName в ось X.

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

Запрос Power BI, указанный ниже, можно вставить непосредственно в окно получения пустого запроса.> Дополнительные сведения см. в обзоре примеров отчетов с помощью запросов OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/PipelineRuns?"
        &"$apply=filter( "
                &"CompletedDate ge {startdate} "
                &"and (SucceededCount eq 1 or PartiallySucceededCount eq 1) "
                &"    ) "
        &"/compute( "
        &"percentile_cont(TotalDurationSeconds, 0.5, PipelineId) as Duration50thPercentileInSeconds, "
            &"percentile_cont(TotalDurationSeconds, 0.8, PipelineId) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.95, PipelineId) as Duration95thPercentileInSeconds) "
                &"/groupby( "
            &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds, Pipeline/PipelineName)) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

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

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

  • Duration50thPercentileInSeconds
  • Duration80thPercentileInSeconds
  • Duration95thPercentileInSeconds

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

Можно переименовать поля столбцов. Например, можно переименовать столбец Pipeline.PipelineName в Pipeline Name,или TotalCount в Total Count. Сведения о том, как это сделать, см. в разделе "Переименовать поля столбцов".

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

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

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

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

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

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

  2. Добавьте следующие поля в ось Y, щелкните правой кнопкой мыши каждое поле и убедитесь, что выбрано значение Sum.

    • Duration50thPercentileInSeconds
    • Duration80thPercentileInSeconds
    • Duration95thPercentileInSeconds
  3. Чтобы изменить название отчета, условные обозначения или другие визуальные элементы отчета, выберите значок "Формат визуальной кисти" в области "Визуализации " и настройте один или несколько параметров.

Отчет должен выглядеть примерно так, как показано на следующем рисунке.

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