Пример отчета о тренде длительности конвейера
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Чтобы визуализировать время выполнения задач для определенного конвейера, можно создать отчет о тренде. Например, на следующем рисунке показан 80-й процентиль в секундах для всех задач, выполненных для определенного конвейера с 1 по 15 декабря 2022 года.
Внимание
Интеграция 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 TaskDisplayName eq '{taskname}' "
&"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.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/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(
Предложение Start filter()
.
Pipeline/PipelineName eq '{pipelinename}'
Возвращать результаты задачи для определенного конвейера.
and TaskDisplayName eq '{taskname}'
Возвращать результаты задачи для конкретной задачи.
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.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)
Для каждого дня вычислите 80-й процентиль продолжительности задач всех задач, соответствующих критериям фильтра.
/groupby(
Предложение Start groupby()
.
(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))
Группируйте по дате завершения выполнения конвейера и вычисляемой 80-й продолжительности задачи процентиля.
&$orderby=PipelineRunCompletedOn/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/PipelineRunActivityResults?"
&"$apply=filter( "
&"Pipeline/PipelineId eq {pipelineid} "
&"and TaskDisplayName eq '{taskname}' "
&"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.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
50-й, 80-й и 90-й процентильные тенденции длительности задач для конвейера
Чтобы просмотреть тенденцию длительности задачи, вычисленную с помощью другого значения процентиля, используйте следующий запрос, который предоставляет 50-й и 95-й процентиль задачи вместе с 80-й процентилью.
Скопируйте и вставьте следующий запрос 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 TaskDisplayName eq '{taskname}' "
&"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, PipelineRunCompletedDateSK) as TaskDuration50thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.95, PipelineRunCompletedDateSK) as TaskDuration95thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds, TaskDuration95thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Тенденция длительности задач для конвейера, отфильтрованного по ветви
Чтобы просмотреть тенденцию длительности задачи для определенной ветви, используйте следующий запрос. Чтобы создать отчет, выполните следующие действия.
- Развернитесь
Branch
вBranch.BranchName
- Изменение типа данных столбца
- Создание отчета о графике
- Выберите срез в области "Визуализации" и добавьте
Branch.BranchName
его в поле среза - Выберите ветвь из среза, для которого необходимо увидеть тенденцию длительности задачи.
Скопируйте и вставьте следующий запрос 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 TaskDisplayName eq '{taskname}' "
&" 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.8, BranchSK, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&" (TaskDuration80thPercentileInSeconds, Branch/BranchName, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Тенденция длительности задач для всех задач конвейера
Чтобы просмотреть тенденцию длительности задачи для всех задач конвейера в одном отчете, используйте следующий запрос. Чтобы создать отчет, выполните следующие действия.
- Изменение типа данных столбца
- Создание отчета о графике
- Выберите срез в области "Визуализации" и добавьте
TaskDisplayName
его в поле среза - Выберите задачу из среза, для которого необходимо просмотреть тенденцию длительности задачи.
Скопируйте и вставьте следующий запрос 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.8, TaskDisplayName, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration80thPercentileInSeconds, TaskDisplayName, PipelineRunCompletedOn/Date)) "
&"&$orderby=PipelineRunCompletedOn/Date asc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
(Необязательно) Переименование запроса
Вы можете переименовать метку запроса по умолчанию, query1, в что-то более понятное. Просто введите новое имя в области параметров запроса.
Разверните столбцы в Редактор Power Query
Перед созданием отчета необходимо развернуть столбцы, возвращающие записи, содержащие несколько полей. В этом экземпляре необходимо развернуть PipelineRunCompletedOn
столбец, чтобы он был неструктурированным PipelineRunCompletedOn.Date
.
Сведения о том, как развернуть рабочие элементы, см. в разделе "Аналитика преобразования" для создания отчетов Power BI.
Изменение типа данных столбца
В меню "Преобразование" измените тип данных для столбца TaskDuration80thPercentileInSeconds
на десятичное число. Сведения о том, как это сделать, см. в разделе "Преобразование типа данных столбца".
(Необязательно) Переименование полей столбцов
Можно переименовать поля столбцов. Например, можно переименовать столбец TaskDuration80thPercentileInSeconds
80th Percentile
в . Сведения о том, как это сделать, см. в разделе "Переименовать поля столбцов".
Закройте запрос и примените изменения
Завершив все преобразования данных, нажмите кнопку "Закрыть" и "Применить " из меню "Главная ", чтобы сохранить запрос и вернуться на вкладку "Отчет " в Power BI.
Создание отчета о графике
В Power BI в разделе "Визуализации" выберите отчет о графике.
Добавьте
PipelineRunCompletedOn.Date
в оси X. Щелкните поле правой кнопкой мыши и выберите PipelineRunCompletedOn.Date вместо иерархии дат.Добавьте
TaskDuration80thPercentileInSeconds
в ось Y и щелкните его правой кнопкой мыши, чтобы убедиться, что выбрана сумма .Чтобы изменить заголовок отчета, выберите значок "Формат визуальной кисти" в области "Визуализации ", выберите "Общие", разверните "Заголовок" и замените существующий текст.
На следующем рисунке показан итоговый отчет.