Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
В этой статье показано, как создать отчет, показывающий, сколько времени в среднем занимает успешное выполнение вашего конвейера. Ежедневная тенденция отчета о продолжительности конвейера аналогична диаграмме тренда скорости конвейера отчета о скорости передачи конвейера.
На следующем рисунке показан пример отчета о тренде длительности.
Внимание
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 BI в разделе "Визуализации" выберите диаграмму "Линейный график".
Добавьте
CompletedOn.Date
к оси X, щелкните правой кнопкой мыши и выберите CompletedOn.Date, а не Иерархия дат.Добавьте
Duration80thPercentileInSeconds
его в ось Y правой кнопкой мыши и убедитесь, что выбрана сумма.
Отображаемый отчет должен выглядеть примерно так, как показано на следующем рисунке.