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


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

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

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

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

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

Внимание

Интеграция 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 в разделе NavigationPropertyBinding Path или в значениях EntitySet. Каждое 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(

Начать filter() часть.

Pipeline/PipelineName eq '{pipelinename}'

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

and CompletedDate ge {startdate}

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

and (SucceededCount eq 1 or PartiallySucceededCount eq 1)

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

)

Закрыть filter() пункт.

/compute(

Начать 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(

Начать 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.