Informe de ejemplo de tiempo de ejecución y tiempo de ciclo

Azure DevOps Services | Azure DevOps Server 2022: Azure DevOps Server 2019

En este artículo se muestra cómo mostrar el promedio de tiempo de espera o el tiempo de ciclo de un conjunto determinado de casos de usuario. En la imagen siguiente se muestra un ejemplo para el promedio de tiempo de espera. Para más información sobre el tiempo de cliente potencial y ciclo, consulte Guía de flujo acumulado, tiempo de ejecución y tiempo de ciclo.

Power BI + OData: informe de ciclo de cliente potencial por prioridad

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.

Requisitos previos

  • Debe ser miembro de un proyecto con acceso básico o superior. Si no se ha agregado como miembro del proyecto, se agrega ahora. Cualquier persona con acceso al proyecto, excepto las partes interesadas, puede ver las vistas de Análisis.
  • 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, los paneles deben estar habilitados . 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 las 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 el permiso *Ver analytics establecido 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 las vistas de Análisis compartidas, debe tener el permiso *Editar vistas de Análisis compartidas establecido 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 agrega ahora. Cualquier persona con acceso al proyecto, excepto las partes interesadas, puede ver las vistas de Análisis.
  • Compruebe que Analytics está instalado y, si no es así, habilitelo. Debe ser propietario de la cuenta o miembro del grupo Administradores de colecciones de proyectos 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, los paneles deben estar habilitados . 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 las 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 el permiso *Ver analytics establecido 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 las vistas de Análisis compartidas, debe tener establecido el permiso Editar vistas de Análisis compartido en Permitir. Para más información, consulte Concesión de permisos para acceder al servicio Analytics.

Consultas de ejemplo

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/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and StateCategory eq 'Completed' "
            &"and CompletedDate ge {startdate} "
            &"and startswith(Area/AreaPath,'{areapath}') "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
            &",CycleTimeDays,LeadTimeDays,CompletedDateSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
    ,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 sus valores. No incluya corchetes {} con la sustitución. Por ejemplo, si el nombre de la organización es "Fabrikam", reemplace {organization} por Fabrikam, no {Fabrikam}.

  • {organization} - Nombre de la organización
  • {project} - El nombre del proyecto de equipo, o bien omite "/{project}" por completo, para una consulta entre proyectos.
  • {areapath} - Ruta de acceso del área. Formato de ejemplo: Project\Level1\Level2
  • {startdate} - Inicie el informe para los elementos completados el día o después de una fecha determinada. Formato: AAAA-MM-DDZ. Ejemplo: 2019-04-01Z representa 2019-abril-01. No incluya comillas.

Desglose de consultas

En la tabla siguiente se describe cada parte de la consulta.

Elemento de consulta

Descripción

$filter=WorkItemType eq 'User Story'

Devolver casos de usuario

and StateCategory eq 'Completed'

Devuelve solo los elementos completados. Solo los elementos completados tienen calculados los tiempos de cliente potencial o ciclo. Para obtener más información sobre las categorías de estado, consulte Cómo se usan los estados de flujo de trabajo y las categorías de estado en Trabajos pendientes y paneles.

and CompletedDate ge {startdate}

Devuelve elementos Cerrados después de la fecha especificada. Ejemplo: 2019-04-01Z representa 2019-April-01

and startswith(Area/AreaPath,'{areapath}')

Elementos de trabajo en una ruta de acceso de área específica. Reemplazar por Area/AreaPath eq '{areapath}' devuelve elementos en una ruta de acceso de área específica.

Para filtrar por nombre de equipo, use la instrucción filter. Teams/any(x:x/TeamName eq '{teamname})'

&$select=WorkItemId, Title, WorkItemType, State, Priority, Severity, TagNames

Selección de campos que se van a devolver

, CycleTimeDays, LeadTimeDays, CompletedDateSK

Devuelve los campos Cycle/Lead Time y CompletedDateSK. CompletedDateSK es CompletedDate como un entero

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)

Expanda Asignado a, Iteración, entidades de área y seleccione campos de entidad.

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 de 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 a un EntityType.

Por ejemplo, EntitySet Name="WorkItemSnapshot" corresponde a EntityType Name="WorkItemSnapshot". Los metadatos de OData para EntitySet Name="WorkItemSnapshot" se muestran a continuación para v4.0-preview. Puede agregar filtros basados en cualquiera de los valores de NavigationPropertyBinding Path enumerados.

<EntitySet Name="WorkItemSnapshot" EntityType="Microsoft.VisualStudio.Services.Analytics.Model.WorkItemSnapshot">
  <NavigationPropertyBinding Path="Date" Target="Dates"/>
  <NavigationPropertyBinding Path="RevisedOn" Target="Dates"/>
  <NavigationPropertyBinding Path="Teams" Target="Teams"/>
  <NavigationPropertyBinding Path="Processes" Target="Processes"/>
  <NavigationPropertyBinding Path="Project" Target="Projects"/>
  <NavigationPropertyBinding Path="Area" Target="Areas"/>
  <NavigationPropertyBinding Path="Iteration" Target="Iterations"/>
  <NavigationPropertyBinding Path="AssignedTo" Target="Users"/>
  <NavigationPropertyBinding Path="ChangedBy" Target="Users"/>
  <NavigationPropertyBinding Path="CreatedBy" Target="Users"/>
  <NavigationPropertyBinding Path="ActivatedBy" Target="Users"/>
  <NavigationPropertyBinding Path="ClosedBy" Target="Users"/>
  <NavigationPropertyBinding Path="ResolvedBy" Target="Users"/>
  <NavigationPropertyBinding Path="Tags" Target="Tags"/>
  <NavigationPropertyBinding Path="ChangedOn" Target="Dates"/>
  <NavigationPropertyBinding Path="ClosedOn" Target="Dates"/>
  <NavigationPropertyBinding Path="CreatedOn" Target="Dates"/>
  <NavigationPropertyBinding Path="ResolvedOn" Target="Dates"/>
  <NavigationPropertyBinding Path="StateChangeOn" Target="Dates"/>
  <NavigationPropertyBinding Path="InProgressOn" Target="Dates"/>
  <NavigationPropertyBinding Path="CompletedOn" Target="Dates"/>
</EntitySet>

Transformaciones de Power BI

Expanda Área, Iteración, Columnas AssignedTo

La consulta devuelve varias columnas que necesita expandir para poder usarlas en Power BI. Cualquier entidad extraída mediante una instrucción OData $expand devuelve un registro con potencialmente varios campos. Debe expandir el registro para aplanar la entidad en sus campos. Algunos ejemplos de estas entidades son: AssignedTo, Iteración y Area.

Después de cerrar el Editor avanzado y mientras permanece en el Editor de Power Query, seleccione el botón expandir en las entidades que necesita para aplanar.

  1. Elija el botón expandir.

    Expandir una columna de entidad, Power BI + OData

  2. Seleccione los campos que se van a acoplar.

    Seleccione los campos que se van a acoplar.

  3. La tabla contiene ahora campos de entidad.

    La tabla contiene ahora campos de entidad.

  4. Repita los pasos del 1 al 3 para todos los campos que representan entidades: Área, Iteración, AssignedTo.

Cambie LeadTimeDays y CycleTimeDays al tipo de datos: Número entero

LeadTimeDays y CycleTimeDays son campos decimales. Por ejemplo, si el tiempo de espera es 10 y 1/2 días, el valor es 10,5. Dado que la mayoría de los informes de tiempo de cliente potencial o ciclo asumen que se redondea al día más cercano, es necesario convertir estos campos en un entero. Al realizar esta conversión, se convierten todos los valores inferiores a 1 a 0.

  1. Seleccione la columna LeadTimeDays haciendo clic en el encabezado de columna.
  2. Seleccione el menú Transformar .
  3. Seleccione Tipo de datos y cambie a Números enteros.
  4. Repita para CycleTimeDays.

Cambiar CompletedDateSK a un campo Date

El campo CompletedDateSK es la versión entera del campo Fecha completada con el formato AAAAMMDD. Por ejemplo, el valor entero de 2019-julio-01 es 20190701. Para facilitar los informes, lo cambiamos a un campo Fecha.

  1. Seleccione la columna CompletedDateSK eligiendo el encabezado de columna.
  2. Seleccione el menú Transformar .
  3. Seleccione Tipo de datos y cambie a Texto.
  4. Seleccione Tipo de fecha (de nuevo) y cambie a Fecha.
  5. Cuando aparezca el cuadro de diálogo Cambiar tipo de columna , seleccione Agregar nuevo paso (en lugar de Reemplazar paso actual). Este proceso de dos pasos es la manera más fácil de cambiarlo a un campo Date adecuado en Power BI.

Cambie el nombre de los campos y la consulta y, a continuación, Cierre & aplicar

Cuando haya terminado, puede optar por cambiar el nombre de las columnas.

  1. Haga clic con el botón derecho en un encabezado de columna y seleccione Cambiar nombre...

    Cambiar nombre de columnas de Power BI

  2. También puede cambiar el nombre de la consulta de la consulta predeterminada Query1 a algo más significativo.

    Consulta de cambio de nombre de Power BI

  3. Una vez hecho esto, elija Cerrar & aplicar para guardar la consulta y volver a Power BI.

    Aplicación de cierre & de 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.

Power BI + OData: campos de ciclo de cliente potencial

Para un informe sencillo, siga estos pasos:

  1. Seleccione Gráfico de líneas de visualización de Power BI.
  2. Agregue el campo "CompletedDateSK" al eje.
    • Haga clic con el botón derecho en "CompletedDateSK" y seleccione "CompletedDateSK", en lugar de Jerarquía de fechas.
  3. Agregue el campo "Prioridad" a la leyenda.
  4. Agregue el campo "LeadTimeDays" a Valores.
    • Haga clic con el botón derecho en el campo "LeadTimeDays" y asegúrese de que está seleccionado Average (Promedio ).

Informe de ejemplo:

Power BI + OData: informe de ciclo de cliente potencial por prioridad

Para dinamizar el informe por ruta de acceso del área (que representa a los equipos), agregue el campo "Area.AreaPath" a Legend, reemplazando "Priority"

Power BI + OData: informe de ciclo de cliente potencial de Teams

Extracción de datos de varios equipos

A menudo, quiere agregar y comparar datos de varios equipos. Si va a extraer elementos de varios equipos, considere la posibilidad de agregar una segmentación de equipos al informe. Una segmentación de equipos permite filtrar el informe existente por Nombre del equipo.

Consultas adicionales

Puede usar las siguientes consultas adicionales para crear informes diferentes pero similares. Puede usar estas consultas con los pasos definidos anteriormente.

Filtrar por Teams, en lugar de ruta de acceso del área

Esta consulta es la misma que la usada anteriormente, salvo que filtra por Nombre de equipo en lugar de ruta de acceso del área.

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/WorkItems?"
        &"$filter=WorkItemType eq 'User Story' "
            &"and StateCategory eq 'Completed' "
            &"and CompletedDate ge {startdate} "
            &"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
        &"&$select=WorkItemId,Title,WorkItemType,State,Priority,Severity,TagNames,AreaSK "
            &",CycleTimeDays,LeadTimeDays,CompletedDateSK "
        &"&$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Lista completa de informes de ejemplo