Compartir vía


Informes y consultas de ejemplo de desencadenamiento de versiones

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

Los informes de agotamiento y de agotamiento muestran la cantidad de trabajo que se está completando con el tiempo. En la imagen siguiente se muestra la grabación tanto por recuento de casos de usuario como por suma de puntos de historia.

Captura de pantalla del informe de gráfico de columnas agrupadas de la versión de Power BI.

Los gráficos de agotamiento solo tienen sentido si planea su trabajo durante el período de tiempo del gráfico. De lo contrario, si planea un sprint por sprint, no verá un agotamiento estándar. En estas instancias, un gráfico de agotamiento tiene más sentido ver cómo se realiza el progreso con el tiempo.

Importante

  • La eliminación de rutas de acceso de área o la reconfiguración de las rutas de acceso de iteración provoca una pérdida de datos irreversible. Por ejemplo, los gráficos de widgets de grabación y de grabación, reducción de sprint y gráficos de velocidad para los equipos con rutas de área modificadas no mostrarán datos precisos. Los gráficos de tendencias históricos hacen referencia a la ruta de acceso del área y a la ruta de iteración tal como se definieron en el momento de cada elemento de trabajo. Una vez eliminado, no puede recuperar datos históricos para estas rutas de acceso.
  • Solo puede eliminar rutas de acceso de área e iteración que ya no usan los elementos de trabajo.

Para obtener más información sobre el agotamiento y la grabación, consulte Configuración de un widget de quemación o de quemación y guía de burndown y burnup.

Nota:

En este artículo se da por supuesto que lee Información general de los informes de ejemplo mediante consultas de OData y tiene conocimientos básicos de Power BI.

Requisitos previos

  • Access: sea miembro de un proyecto con 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 determinar las propiedades disponibles con fines de filtro o informe, consulte Referencia de metadatos para Azure Boards. 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.

Agotamiento de casos de usuario en una ruta de acceso de área desde la fecha de inicio y finalización

En la consulta siguiente se muestra cómo devolver datos históricos de Casos de usuario para una versión basada en elementos de trabajo etiquetados con una etiqueta de versión.

Nota:

En el caso de los informes basados en el filtrado de una etiqueta, la etiqueta debe asignarse al elemento de trabajo al principio de la fecha de inicio de lanzamiento o de detención o de quemación. De lo contrario, el elemento de trabajo no se incluye en los datos devueltos.

Copie y pegue la siguiente consulta de Power BI directamente en la ventana Obtener consulta en blanco de datos>. 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

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, o bien omite "/{project}" por completo, para una consulta entre proyectos.
  • {areapath} - Ruta de acceso del área. Formato de ejemplo: Project\Level1\Level2
  • {tag} - Etiqueta que representa la versión. Todos los elementos de trabajo etiquetados con {tagname} se incluyen en el informe
  • {startdate} - La fecha de inicio del informe de agotamiento con el formato : YYYY-MM-DDZ. Por ejemplo: 2022-04-01Z representa 2022-april-01. No incluya comillas.
  • {enddate} - La fecha de finalización del informe de agotamiento.

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 casos de usuario en la grabació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}')

Incluya solo casos de usuario en una ruta de acceso de área específica reemplazando '{areapath}'.
Para filtrar por un nombre de equipo, use la instrucción Teams/any(x:x/TeamName eq '{teamname})'filter .

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

Especifica la etiqueta que representa la versión en la que se va a grabar y para incluir todos los elementos de trabajo etiquetados con {tagname} en el informe.

and DateValue ge {startdate}

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

and DateValue le {enddate}

Inicie la grabación en o antes de la fecha especificada. El mismo formato que {startdate}.

)

Cláusula Close filter() .

/groupby (

Cláusula Start 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 casos de usuario y suma de puntos de historia.

)

Cláusula Close groupby() .

Agotamiento de casos de usuario para un equipo

La consulta siguiente devuelve los datos de agotamiento filtrados por nombre de equipo en lugar de ruta de acceso del área.

Copie y pegue la siguiente consulta de Power BI directamente en la ventana Obtener consulta en blanco de datos>. 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

Casos de usuario de burndown con una instantánea todos los 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 de Power BI directamente en la ventana Obtener consulta en blanco de datos>. 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

Casos de usuario de burndown basados en una ruta de acceso de iteración y área

Algunas organizaciones usan rutas de acceso de iteración para marcar Historias para una versión. Por ejemplo, pueden tener una ruta de acceso de iteración de MyProject\Release1. En la consulta siguiente se muestra cómo seleccionar Casos de usuario por ruta de acceso de iteración.

Copie y pegue la siguiente consulta de Power BI directamente en la ventana Obtener consulta en blanco de datos>. 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

Casos de usuario de burndown con un valor de campo personalizado

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

Deberá reemplazar y {customfieldname} {releasevalue} en la consulta. Para determinar el nombre del campo personalizado, consulte Referencia de metadatos para Azure Boards, Propiedades personalizadas. Reemplazará {customfieldname} por el nombre de la propiedad personalizada, por ejemplo Custom_Milestone.

Copie y pegue la siguiente consulta de Power BI directamente en la ventana Obtener consulta en blanco de datos>. 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. Simplemente escriba un nuevo nombre en el panel Configuración de consulta.

Captura de pantalla de las opciones del menú de consulta de Power BI, cambiar el nombre de la consulta.

Expandir columnas en Editor de Power Query

Antes de crear el informe, deberá expandir columnas que devuelvan registros que contengan varios campos. En este caso, querrá expandir los registros siguientes:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

Para obtener información sobre cómo expandir elementos de trabajo, consulte Transformación de datos de Análisis para generar informes de Power BI.

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.

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, elija Gráfico de columnas agrupadas en Visualizaciones.

    Captura de pantalla de las selecciones visualizaciones y campos de Power BI para el informe de gráfico de columnas agrupadas de lanzamiento.

  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 el agotamiento del recuento de historias y sumas o puntos de historia.

Captura de pantalla del informe de gráfico de columnas agrupadas de la versión de ejemplo de Power BI.