Informe de ejemplo de duración de la tarea de canalización
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
¿Cuánto tiempo tardan en completarse diferentes tareas? En este artículo se proporcionan las consultas desde las que puede generar un informe para una canalización específica y sus tareas. Por ejemplo, en la imagen siguiente se muestra el percentil 50, 80 y 95 en segundos para todas las tareas completadas para una canalización específica del 1 de septiembre al 15 de diciembre de 2022.
Importante
La integración y el acceso de Power BI a la fuente OData del servicio Analytics están disponibles con carácter general para Azure DevOps Services y Azure DevOps Server 2020 y versiones posteriores. Las consultas de ejemplo proporcionadas en este artículo solo son válidas en Azure DevOps Server 2020 y versiones posteriores, y dependen de la versión v3.0-preview o posterior. Le recomendamos que use estas consultas y nos proporcione sus comentarios.
Requisitos previos
- Nivel de acceso: debe ser miembro de un proyecto con acceso básico o superior.
- Permiso: de forma predeterminada, los miembros del proyecto tienen permiso para consultar Analytics y crear vistas.
- Para obtener más información sobre otros requisitos previos relacionados con las actividades de habilitación de servicios y características y seguimiento de datos generales, consulte Permisos y requisitos previos para acceder a Analytics.
Nota:
En este artículo se supone que ha leído Información general de informes de ejemplo mediante consultas de OData y que tiene conocimientos básicos de Power BI.
Consultas de ejemplo
Puede consultar el conjunto de PipelineRunActivityResults?
entidades para devolver información de duración de la tarea.
Nota:
Para determinar las propiedades disponibles con fines de filtro o informe, consulte Referencia de metadatos para Azure Pipelines. Puede filtrar las consultas o devolver propiedades mediante cualquiera de los Property
valores de un EntityType
valor o NavigationPropertyBinding Path
disponible con .EntitySet
Cada EntitySet
uno corresponde a un objeto EntityType
. Para obtener más información sobre el tipo de datos de cada valor, revise los metadatos proporcionados para el correspondiente EntityType
.
Puede pegar la consulta de Power BI que se muestra a continuación directamente en la ventana Obtener consulta en blanco de datos>. Para obtener más información, consulte Introducción a los informes de ejemplo mediante consultas de 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.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName)) "
&"&$orderby=TaskDuration50thPercentileInSeconds desc "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Cadenas de sustitución y desglose de consultas
Sustituya las cadenas siguientes por sus valores. No incluya corchetes {} con la sustitución. Por ejemplo, si el nombre de la organización es "Fabrikam", reemplace por {organization}
Fabrikam
, no {Fabrikam}
por .
{organization}
- El nombre de la organización{project}
- El nombre del proyecto de equipo{pipelinename}
: el nombre de la canalización. Ejemplo:Fabrikam hourly build pipeline
{startdate}
- La fecha de inicio del informe. Formato: AAAA-MM-DDZ. Ejemplo:2021-09-01Z
representa el 1 de septiembre de 2021. No incluya entre comillas o corchetes y use dos dígitos tanto para el mes como para la fecha.
Desglose de consultas
En la tabla siguiente se describe cada parte de la consulta.
Elemento de consulta
Descripción
$apply=filter(
Cláusula Start filter()
.
Pipeline/PipelineName eq '{pipelinename}'
Devuelve ejecuciones de canalización para la canalización especificada.
and PipelineRunCompletedOn/Date ge {startdate}
Devuelve los resultados de la tarea para una ejecución de canalización en o después de la fecha especificada.
and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded')
Devuelve los resultados de la tarea solo para ejecuciones de canalización correctas o parcialmente correctas.
and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1)
Omita las ejecuciones de canalización canceladas, omitidas o abandonadas.
)
Cierre la filter()
cláusula .
/compute(
Cláusula Start compute()
.
percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds,
Para cada tarea, calcule el percentil 50 de duraciones de tareas para todas las tareas que coincidan con los criterios de filtro.
percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds,
Para cada tarea, calcule el percentil 80 de duraciones de tareas para todas las tareas que coincidan con los criterios de filtro.
percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds)
Para cada tarea, calcule el percentil 95 de duraciones de tareas para todas las tareas que coincidan con los criterios de filtro.
/groupby(
Inicie la groupby()
cláusula .
(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName))
Agrupar por tarea de ejecución de canalización y duración calculada de la tarea percentil 50, duración de la tarea percentil 80 y duración de la tarea percentil 95.
&$orderby=TaskDuration50thPercentileInSeconds desc
Ordene la respuesta por tarea con una duración de percentil 50 más alta.
(Opcional) Cambiar el nombre de la consulta
Puede cambiar el nombre de la etiqueta de consulta predeterminada, Query1, a algo más significativo. Simplemente escriba un nuevo nombre en el panel Configuración de consulta.
Cambio del tipo de datos de columna
En el menú Transformar , cambie el tipo de datos de las columnas siguientes a Decimal Number**.
Para obtener información sobre cómo, consulte Transformación de un tipo de datos de columna.
- TaskDuration80thPercentileInSeconds
- TaskDuration80thPercentileInSeconds
- TaskDuration95thPercentileInSeconds
.
(Opcional) Cambiar el nombre de los campos de columna
Puede cambiar el nombre de los campos de columna. Por ejemplo, puede cambiar el nombre de las columnas siguientes para que sean más fáciles de mostrar. Para obtener información sobre cómo hacerlo, consulte Cambiar el nombre de los campos de columna.
Nombre de campo original | Campo cambiado de nombre |
---|---|
TaskDisplayName |
Nombre de tarea |
TaskDuration50thPercentileInSeconds |
Percentil 50 |
TaskDuration80thPercentileInSeconds |
Percentil 80 |
TaskDuration95thPercentileInSeconds |
Percentil 95 |
Cierre la consulta y aplique los cambios
Una vez que haya completado todas las transformaciones de datos, elija Cerrar y aplicar en el menú Inicio para guardar la consulta y volver a la pestaña Informe en Power BI.
Creación del informe de tabla
En Power BI, en Visualizaciones, elija el informe Tabla . Se ha cambiado el nombre de los campos como se indica en la sección Cambiar nombre de los campos de columna.
Agregue los siguientes campos a las columnas en el orden especificado.
- Nombre de tarea
- Percentil 50
- Percentil 80
- Percentil 95
Para cambiar el título del informe, seleccione el icono Formato del pincel de pintura visual en el panel Visualizaciones , seleccione General, expanda Título y reemplace el texto existente.
En la imagen siguiente se muestra una parte del informe resultante.