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


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

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

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

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

Снимок экрана: отчет о тренде длительности конвейеров 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 или NavigationPropertyBinding Path, доступных вместе с EntitySet. Каждое EntitySet соответствует EntityType. Дополнительные сведения о типе данных каждого значения см. в метаданных, предоставленных для соответствующего EntityTypeзначения.

Получение тренда длительности 80-го процентиля для указанного конвейера

Скопируйте и вставьте следующий запрос 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.8,CompletedDateSK) as Duration80thPercentileInSeconds) "
                &"/groupby( "
                &"(Duration80thPercentileInSeconds, CompletedOn/Date)) "
            &"&$orderby=CompletedOn/Date asc "
    ,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.8,CompletedDateSK) as Duration80thPercentileInSeconds)

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

/groupby(

Начало выполнения groupby()

(Duration80thPercentileInSeconds, CompletedOn/Date))

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

&$orderby=CompletedOn/Date asc

Отсортируйте ответ по дате завершения.

Фильтрация по идентификатору конвейера, а не имени конвейера

Конвейеры можно переименовать. Чтобы убедиться, что отчеты 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.8,CompletedDateSK) as Duration80thPercentileInSeconds) "
                &"/groupby( "
                &"(Duration80thPercentileInSeconds, CompletedOn/Date)) "
            &"&$orderby=CompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Получите 50-й и 90-й процентиль, а также продолжительность 80-го процентиля тренда.

Может потребоваться просмотреть тенденцию длительности, вычисляемую с помощью другого значения процентиля. Следующие запросы предоставляют 50-й и 90-й процентили длительности выполнения конвейера, а также 80-й процентиль.

Скопируйте и вставьте следующий запрос 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,CompletedDateSK) as Duration50thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.8,CompletedDateSK) as Duration80thPercentileInSeconds, "
                &"percentile_cont(TotalDurationSeconds, 0.90,CompletedDateSK) as Duration90thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds, Duration90thPercentileInSeconds, CompletedOn/Date)) "
            &"&$orderby=CompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Фильтрация по ветви

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

  • Расширьте Branch до Branch.BranchName.
  • Выберите визуализацию Power BI срез и добавьте Branch.BranchName в поле среза.
  • Выберите конвейер из среза, для которого необходимо увидеть тенденцию длительности конвейера.

Скопируйте и вставьте следующий запрос Power BI непосредственно в окно Get Data>Blank Query. Дополнительные сведения см. в разделе "Обзор примеров отчетов с помощью запросов 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.8,BranchSK, CompletedDateSK) as Duration80thPercentileInSeconds) "
                &"/groupby( "
                &"(Duration80thPercentileInSeconds, Branch/BranchName, CompletedOn/Date)) "
            &"&$orderby=CompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Тенденция длительности для всех конвейеров проектов

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

  • Расширьте Pipeline в Pipeline.PipelineName.
  • Выберите срез в области "Визуализации" и добавьте Pipeline.PipelineNam в поле среза.
  • Выберите конвейер из среза, чтобы увидеть тенденцию уровня прохождения конвейера.

Скопируйте и вставьте следующий запрос 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.8,PipelineId, CompletedDateSK) as Duration80thPercentileInSeconds) "
            &"/groupby( "
                &"(Duration80thPercentileInSeconds, Pipeline/PipelineName, CompletedOn/Date)) "
                &"&$orderby=CompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Разверните столбцы в редакторе Power Query

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

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

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

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

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

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

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

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

Создание отчета о графике

  1. В Power BI в разделе "Визуализации" выберите диаграмму "Линейный график".

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

  2. Добавьте CompletedOn.Date к оси X, щелкните правой кнопкой мыши и выберите CompletedOn.Date, а не Иерархия дат.

  3. Добавьте Duration80thPercentileInSeconds его в ось Y правой кнопкой мыши и убедитесь, что выбрана сумма.

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

Снимок экрана отчёта Power BI о тенденциях длительности конвейеров.