Informe de ejemplo de duración de canalización
Azure DevOps Services | Azure DevOps Server 2020
En este artículo se muestra cómo obtener la duración de la canalización o el tiempo necesario para ejecutar una canalización. Este informe es similar a la métrica de resumen de duración del gráfico "Duración de la canalización" del informe Duración de la canalización.
Importante
Power BI integración y acceso a la fuente OData del servicio Analytics se encuentran en versión preliminar. Las consultas de ejemplo proporcionadas en este artículo solo son válidas en Azure DevOps Services y dependen de la versión v3.0-preview o posterior. Le recomendamos que use estas consultas y nos proporcione comentarios.
En la imagen siguiente se muestra un ejemplo del informe de duración de la canalización.
Nota:
En este artículo se da por supuesto que ha leído Información general de los informes de ejemplo mediante consultas de OData y tiene un conocimiento básico de Power BI.
Requisitos previos
- Debe ser miembro de un proyecto con acceso Básico o superior. Si no se ha agregado como miembro del proyecto, se agregará ahora. Cualquier persona con acceso al proyecto, excepto las partes interesadas, puede ver las vistas de Analytics.
- Para que los datos de Analytics estén disponibles, se debe habilitar el servicio correspondiente. Por ejemplo, para consultar los datos de seguimiento del trabajo, Boards debe estar habilitado. Si está deshabilitado, no se mostrarán las vistas de Analytics . Para volver a habilitar un servicio, consulte Activación o desactivación de un servicio de Azure DevOps
- Para usar vistas de Analytics, habilite la característica vista previa de vistas de Análisis para usuarios individuales o para la organización.
- Además, debe tener establecido el permiso *View Analytics en Permitir. Para más información, consulte Concesión de permisos para acceder al servicio Analytics.
- Para usar Power BI para Azure DevOps o para ejercer una consulta de OData para Analytics, debe tener el permiso View Analytics establecido en Permitir. De forma predeterminada, se concede acceso a todos los colaboradores con acceso básico. Para editar vistas compartidas de Analytics, debe tener establecido el permiso Editar vistas de Analytics compartidas en Permitir. Para más información, consulte Concesión de permisos para acceder al servicio Analytics.
- Debe ser miembro de un proyecto con acceso Básico o superior. Si no se ha agregado como miembro del proyecto, se agregará ahora. Cualquier persona con acceso al proyecto, excepto las partes interesadas, puede ver las vistas de Analytics.
- Compruebe que Analytics está instalado y, si no es así, habilite. Debe ser propietario de la cuenta o miembro del grupo administradores de recopilación de Project para agregar extensiones o habilitar el servicio.
- Para que los datos de Analytics estén disponibles, se debe habilitar el servicio correspondiente. Por ejemplo, para consultar los datos de seguimiento del trabajo, Boards debe estar habilitado. Si está deshabilitado, no se mostrarán las vistas de Analytics . Para volver a habilitar un servicio, consulte Activación o desactivación de un servicio de Azure DevOps
- Para usar vistas de Analytics, habilite la característica vista previa de vistas de Análisis para usuarios individuales o para la organización.
- Además, debe tener establecido el permiso *View Analytics en Permitir. Para más información, consulte Concesión de permisos para acceder al servicio Analytics.
- Para usar Power BI para Azure DevOps o para ejercer una consulta de OData para Analytics, debe tener el permiso*Ver Analytics establecido en Permitir. De forma predeterminada, se concede acceso a todos los colaboradores con acceso básico. Para editar vistas compartidas de Analytics, debe tener establecido el permiso Editar vistas de Analytics compartidas en Permitir. Para más información, consulte Concesión de permisos para acceder al servicio Analytics.
Consultas de ejemplo
Puede pegar la consulta 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/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
Cadenas de sustitución
Cada consulta contiene las siguientes cadenas que debe sustituir por los valores. No incluya corchetes {} con la sustitución. Por ejemplo, si el nombre de la organización es "Fabrikam", reemplace {organization} por Fabrikam, no por {Fabrikam}.
- {organization}: el nombre de la organización
- {project} : el nombre del proyecto de equipo
- {pipelinename}: el nombre de la canalización. Ejemplo: Canalización de compilación por hora de Fabrikam.
- {startdate}: la fecha de inicio del informe. Formato: AAAA-MM-DDZ. Ejemplo: 2021-09-01Z representa el 1 de septiembre de 2021. No incluya 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(
Iniciar filtro()
Pipeline/PipelineName eq '{pipelinename}'
Devolver ejecuciones de canalización para la canalización especificada
and CompletedDate ge {startdate}
Devolver ejecuciones de canalización en o después de la fecha especificada
and (SucceededCount eq 1 or PartiallySucceededCount eq 1)
Devolver solo las ejecuciones correctas o parcialmente correctas
)
Cerrar filtro()
/compute(
Iniciar compute()
percentile_cont(TotalDurationSeconds, 0.5) as Duration50thPercentileInSeconds,
Percentil de proceso 50 de duraciones de canalización de todas las ejecuciones de canalización que coinciden con los criterios de filtro/td>
percentile_cont(TotalDurationSeconds, 0.8) as Duration80thPercentileInSeconds,
Percentil de proceso 80 de duraciones de canalización de todas las ejecuciones de canalización que coinciden con los criterios de filtro
percentile_cont(TotalDurationSeconds, 0.95) as Duration95thPercentileInSeconds)
Percentil de proceso 95 de duraciones de canalización de todas las ejecuciones de canalización que coinciden con los criterios de filtro
/groupby(
Iniciar groupby()
(Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds))
Agrupar la respuesta por - Duration50thPercentileInSeconds, Duration80thPercentileInSeconds,Duration95thPercentileInSeconds
Filtros de consulta
Para determinar los filtros de consulta disponibles, consulte los metadatos como se describe en Exploración de los metadatos de OData de Analytics. Puede filtrar las consultas mediante cualquiera de los valores navigationPropertyBinding Path enumerados en entitySet. Para obtener más información sobre el tipo de datos de cada valor, revise los metadatos proporcionados para el entityType correspondiente. Cada EntitySet corresponde al valor singular de entityType.
Por ejemplo, EntitySet Name="PipelineRunActivityResults" corresponde a EntityType Name="PipelineRunActivityResult". Los metadatos de OData para EntitySet Name="PipelineRunActivityResults" se muestran a continuación para v4.0-preview. Puede agregar filtros basados en cualquiera de los valores de NavigationPropertyBinding Path enumerados.
<EntitySet Name="PipelineRunActivityResults" EntityType="Microsoft.VisualStudio.Services.Analytics.Model.PipelineRunActivityResult">
<NavigationPropertyBinding Path="Project" Target="Projects"/>
<NavigationPropertyBinding Path="Pipeline" Target="Pipelines"/>
<NavigationPropertyBinding Path="PipelineTask" Target="PipelineTasks"/>
<NavigationPropertyBinding Path="PipelineJob" Target="PipelineJobs"/>
<NavigationPropertyBinding Path="Branch" Target="Branches"/>
<NavigationPropertyBinding Path="PipelineRunQueuedOn" Target="Dates"/>
<NavigationPropertyBinding Path="PipelineRunStartedOn" Target="Dates"/>
<NavigationPropertyBinding Path="PipelineRunCompletedOn" Target="Dates"/>
<NavigationPropertyBinding Path="ActivityStartedOn" Target="Dates"/>
<NavigationPropertyBinding Path="ActivityCompletedOn" Target="Dates"/>
</EntitySet>
transformaciones de Power BI
Cambiar el tipo de columna
La consulta no devuelve todas las columnas en el formato en el que puede consumirlas directamente en Power BI informes.
Cambie el tipo de columnas Duration50thPercentileInSeconds, Duration80thPercentileInSeconds y Duration95thPercentileInSeconds a Número decimal.
Cambiar el nombre de los campos y la consulta
Cuando haya terminado, puede optar por cambiar el nombre de las columnas.
Haga clic con el botón derecho en un encabezado de columna y seleccione Cambiar nombre...
También puede cambiar el nombre de la consulta de la consulta predeterminada Query1 a algo más significativo.
Una vez hecho esto, elija Cerrar & aplicar para guardar la consulta y volver a Power BI.
Creación del informe
Power BI muestra los campos en los que puede informar.
Nota:
En el ejemplo siguiente se supone que nadie ha cambiado el nombre de ninguna columna.
Para un informe sencillo, siga estos pasos:
Seleccione Power BI gráfico de columnas en clúster de visualización.
Agregue el campo "Duration50thPercentileInSeconds" a Fields.
Agregue el campo "Duration80thPercentileInSeconds" a Fields.
Agregue el campo "Duration95thPercentileInSeconds" a Fields.
El informe debe parecerse a la siguiente imagen.
Más consultas
Puede usar las siguientes consultas para crear informes diferentes pero similares mediante los mismos pasos definidos anteriormente en este artículo.
Uso del identificador de canalización, en lugar de nombre de canalización
Puede cambiar el nombre de la canalización. Para asegurarse de que los informes de Power BI no se interrumpan cuando se cambie el nombre de la canalización, use el identificador de canalización en lugar del nombre de la canalización. Puede obtener el identificador de canalización de la dirección URL de la página de ejecuciones de canalización.
https://dev.azure.com/{organization}/{project}/_build?definitionId= **{pipelineid}**
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/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
Filtrar por rama
Es posible que desee ver la duración de una canalización solo para una rama determinada. Para crear el informe, lleve a cabo los siguientes pasos adicionales junto con esos pasos definidos anteriormente en este artículo.
- Expanda Rama en Branch.BranchName.
- Agregue el campo Branch.BranchName al eje.
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/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
Duración de todas las canalizaciones de proyecto
Es posible que desee ver la duración de todas las canalizaciones del proyecto en un único informe. Para crear el informe, siga los pasos adicionales siguientes junto con lo que se ha definido anteriormente en este artículo.
- Expanda Canalización en Pipeline.PipelineName.
- Agregue el campo PIpeline.PipelineName al eje.
Consulte Resumen de resultados para todos los informes de ejemplo de canalizaciones que tienen pasos similares detallados que se requieren aquí.
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/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
Lista completa de informes de ejemplo para Pipelines
Canalización
Canalización y prueba