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 pueden provocar una pérdida de datos y no se pueden revertir. Por ejemplo, los gráficos de widgets de evolución o de evolución, la evolución del sprint y los gráficos de velocidad de los equipos cuyas rutas de acceso de área cambian no reflejarán los datos correctos. Los gráficos de tendencias históricos hacen referencia a la ruta de acceso del área y la ruta de acceso de iteración tal como se define en un punto del pasado para cada elemento de trabajo. Cuando se elimina una ruta de acceso de área o una ruta de acceso de iteración , no se pueden recuperar los datos históricos de ella.

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

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

  • Para ver los datos de Analytics y consultar el servicio, debe ser miembro de un proyecto con acceso básico o superior. De forma predeterminada, a todos los miembros del proyecto se les conceden permisos para consultar Analytics y definir vistas de Analytics.
  • Para obtener información sobre otros requisitos previos relacionados con las actividades de habilitación de características y servicios 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.

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/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.

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/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.

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/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.

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/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.

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/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.