Consultas e informes de ejemplo de evolución de versiones

Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Los informes de agotamiento y evolución ascendente muestran cuánto trabajo se completa a lo largo del tiempo. La siguiente imagen muestra la evolución tanto por el recuento de historias de usuario como por la suma de puntos de historia.

Captura de pantalla del informe de gráfico de columnas agrupadas de Power BI Release evolución.

Los gráficos de evolución solo tienen sentido si planifica su trabajo para el período de tiempo del gráfico. De lo contrario, si planifica sobre una base de sprint por sprint, no verá una evolución estándar. En estos casos, un gráfico de evolución ascendente tiene más sentido para ver cómo se avanza en el tiempo.

Importante

Al eliminar valores Ruta de acceso de área o volver a configurar los valores de Ruta de acceso de iteración, se produce una pérdida de datos irreversible en los gráficos siguientes.

  • Gráficos tipo widget de trabajo pendiente y trabajo realizado
  • Gráficos de agotamiento de sprints
  • Gráficos de velocidad para equipos con rutas de áreas de trabajo modificadas
  • Gráficos de tendencias históricos que hacen referencia a los valores de Ruta de acceso de área e Ruta de acceso de iteración tal como se define en el momento de cada elemento de trabajo

Puede eliminar rutas de área e iteración solo cuando ya no sean utilizadas por ningún elemento de trabajo. Al eliminar estas rutas de acceso, ya no puede recuperar sus datos históricos.

Para obtener más información sobre la evolución y el evolución ascendente, consulte Configurar un widget de evolución o evolución ascendente y Guía de evolución y evolución ascendente.

Nota:

En este artículo se da por hecho que has leído Información general de informes de ejemplo mediante consultas de OData y tienes un conocimiento básico de Power BI.

Categoría Requisitos
Niveles de acceso - Miembro del proyecto.
- Al menos acceso Básico.
Permisos 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.

Consultas de ejemplo

Las consultas de esta sección muestran cómo generar gráficos de agotamiento de elementos de trabajo basados en datos históricos. Todas estas consultas especifican el WorkItemSnapshot conjunto de entidades.

Nota:

Para buscar las propiedades disponibles para filtrar o notificar, consulte la referencia de Metadata para Azure Boards. Puede filtrar las consultas o devolver propiedades mediante cualquier valor Property definido en un EntityType, o cualquier valor NavigationPropertyBinding Path enumerado para un EntitySet. Cada EntitySet se asigna a un EntityType, que describe el tipo de datos de cada propiedad.

Evolución de historias de usuario en una ruta de área desde la fecha de inicio hasta la fecha de finalización

La siguiente consulta muestra cómo devolver datos históricos de historias de usuarios para una versión basados en elementos de trabajo etiquetados con una etiqueta de versión.

Nota:

En el caso de los informes que se filtran por etiqueta, asigne la etiqueta al elemento de trabajo al principio de la fecha de inicio de lanzamiento o de evolución o de evolución ascendente. De lo contrario, los datos devueltos no incluyen el elemento de trabajo.

Copie y pegue la siguiente consulta Power BI directamente en la ventana Get Data>Blank Query. Para obtener más información, consulte Información general sobre informes de ejemplo mediante consultas de OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Cadenas de sustitución y desglose de consultas

Reemplace las cadenas siguientes por los valores. No incluya los corchetes {} en la sustitución. Por ejemplo, si el nombre de su organización es "Fabrikam", reemplace {organization} por Fabrikam, no por {Fabrikam}.

  • {organization} - Nombre de la organización.
  • {project} - El nombre de su proyecto de equipo. Omita "/{project}" por completo para una consulta entre proyectos.
  • {areapath} - Ruta de acceso del área. Formato de ejemplo: Project\Level1\Level2.
  • {tagname} - Etiqueta que representa el lanzamiento. El informe incluye todos los elementos de trabajo etiquetados con {tagname}.
  • {startdate} - La fecha para iniciar el informe de evolución con el formato: YYYY-MM-DDZ. Por ejemplo, 2022-04-01Z representa 2022-april-01. No incluya comillas.
  • {enddate} - Fecha de finalización del informe desglosado.

Desglose de consultas

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

Elemento de consulta

Descripción

$apply=filter(WorkItemType eq 'User Story'

Incluir historias de usuario en la evolución.

and StateCategory ne 'Completed'

Filtra los elementos completados. 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 startswith(Area/AreaPath,'{areapath}')

Incluir solo Historias de Usuarios bajo una Ruta de Área específica en sustitución de '{areapath}'.
Para filtrar por un nombre de equipo, use la instrucción de filtrado Teams/any(x:x/TeamName eq '{teamname})'.

and Tags/any(x:x/TagName eq '{tagname}').

Especifica la etiqueta que representa la versión a desglosar e incluye todos los elementos de trabajo etiquetados con {nombre de etiqueta} en el informe.

and DateValue ge {startdate}

Inicie la evolución en la fecha especificada o después. Ejemplo: 2022-04-01Z representa 2022-april-01.

and DateValue le {enddate}

Finalice la evolución en la fecha especificada o antes. El mismo formato que {startdate}.

)

Cláusula de cierre filter().

/groupby (

Iniciar cláusula groupby().

(DateValue, State, Area/AreaPath),

Agrupe por DateValue (se usa para la tendencia) y los campos en los que quiera informar.

aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints)

Agregado por recuento de historias de usuario y suma de Puntos de Historia.

)

Cláusula de cierre groupby().

Evolución de historias de usuario para un equipo

La siguiente consulta devuelve datos de evolución filtrados por el nombre del equipo en lugar de Ruta del área.

Copie y pegue la siguiente consulta Power BI directamente en la ventana Get Data>Blank Query. Para obtener más información, consulte Información general sobre informes de ejemplo mediante consultas de OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and (Teams/any(x:x/TeamName eq '{teamname}') or Teams/any(x:x/TeamName eq '{teamname}') or Teams/any(x:x/TeamName eq '{teamname}')) "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Evolución de historias de usuario con una instantánea cada viernes

El uso de una instantánea semanal reduce la cantidad de datos extraídos en Power BI y aumenta el rendimiento de las consultas.

Copie y pegue la siguiente consulta Power BI directamente en la ventana Get Data>Blank Query. Para obtener más información, consulte Información general sobre informes de ejemplo mediante consultas de OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Evolución de historias de usuario en función de un área y una ruta de iteración

Algunas organizaciones utilizan Rutas de iteración para marcar historias para una versión. Por ejemplo, pueden usar una Ruta de iteración de MiProyecto1\Versión1. En la consulta siguiente se muestra cómo seleccionar casos de usuario por ruta de iteración.

Copie y pegue la siguiente consulta Power BI directamente en la ventana Get Data>Blank Query. Para obtener más información, consulte Información general sobre informes de ejemplo mediante consultas de OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Evolución de historias de usuario con un valor de campo personalizado

Algunas organizaciones utilizan un campo personalizado para marcar historias de usuarios para una versión. Por ejemplo, pueden usar un campo denominado Hito. Esta consulta muestra cómo seleccionar casos de usuario por un campo personalizado.

Reemplace tanto {customfieldname} como {releasevalue} en la consulta. Para determinar el nombre del campo personalizado, consulte Metadata reference for Azure Boards, Custom properties. Reemplace por {customfieldname} el nombre de la propiedad personalizada, como Custom_Milestone.

Copie y pegue la siguiente consulta Power BI directamente en la ventana Get Data>Blank Query. Para obtener más información, consulte Información general sobre informes de ejemplo mediante consultas de OData.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(Opcional) Cambiar el nombre de la consulta

Puede cambiar el nombre de la etiqueta de consulta predeterminada, Query1, a algo más significativo. Escriba un nuevo nombre en el panel Configuración de consulta .

Captura de pantalla de las opciones del menú de consulta de Power BI, renombrar consulta.

Expandir columnas en Editor de Power Query

Antes de crear el informe, expanda las columnas que devuelven registros que contienen varios campos. En este caso, expanda los registros siguientes:

  • Area
  • Iteration
  • AssignedTo

Para obtener más información sobre cómo expandir elementos de trabajo, consulte Transformar los datos de Analytics para generar informes de Power BI.

Cierre la consulta y aplique los cambios

Cuando termine todas las transformaciones de datos, seleccione Cerrar y aplicar en el menú Inicio . Esta acción guarda la consulta y le devuelve a la pestaña Report en Power BI.

Captura de pantalla de Editor de Power Query opción Cerrar y aplicar.

Creación del gráfico de columnas agrupadas

  1. En Power BI, seleccione Gráfico de columnas agrupadas en Visualizations.

    Captura de pantalla de las selecciones de Visualizaciones y campos de Power BI para el informe de gráfico de columnas agrupadas de evolución de versión.

  2. Agregar DateValue al eje X, haga clic con el botón derecho y seleccione DateValue, en lugar de Date Hierarchy

  3. Agregue Count al eje Y.

  4. Agregue TotalStoryPoints al eje Y.

El informe de ejemplo muestra la evolución tanto del recuento de Historias como de la suma de Grados de dificultad del caso.

Captura de pantalla del informe de gráfico de columnas agrupadas de Power BI Sample Release evolución.