Acumulación de valores de elementos de trabajo secundarios en el informe de ejemplo primario
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
El paquete acumulativo proporciona compatibilidad para mostrar un recuento de elementos de trabajo o una suma de puntos de historia, trabajo restante u otro campo personalizado de elementos secundarios. En este artículo se proporcionan varios ejemplos de cómo generar un informe acumulativo tabular para epopeyas, características o casos de usuario que contienen elementos de trabajo secundarios. En la imagen siguiente se muestra un ejemplo de puntos de historia inscritos para sus características principales.
Para obtener más información sobre el paquete acumulativo y las opciones para mostrar el paquete acumulativo, consulte Visualización del progreso del resumen o totales en Azure Boards.
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 siguientes devuelven datos del WorkItems
conjunto de entidades para admitir la generación de informes de matriz de acumulación.
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
.
Artículo acumulativo apunta a características de casos de usuario secundarios basados en la 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/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, 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
.
Desglose de consultas
En la tabla siguiente se describe cada parte de la consulta.
Elemento de consulta
Descripción
$filter=WorkItemType eq 'Feature'
Devuelve características.
and State ne 'Cut'
Omitir errores cerrados.
and startswith(Area/AreaPath,'{areapath}')
Devuelve elementos de trabajo en una ruta de acceso de área específica, reemplazando Area/AreaPath eq '{areapath}'
los elementos en una ruta de acceso de área específica.
Para filtrar por nombre de equipo, use la instrucción Teams/any(x:x/TeamName eq '{teamname})'
filter .
and Descendants/any()
Incluya todas las características, incluso las que no tienen casos de usuario. Reemplace por "any(d/WorkItemType eq 'User Story')" para omitir las características que no tienen casos de usuario secundarios.
&$select=WorkItemId, Title, WorkItemType, State
Seleccione los campos que desea devolver.
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),
Seleccione los campos AssignedTo
de propiedades expandibles , Iteration
, Area
.
Descendants(
Expanda la Descendants
cláusula .
$apply=filter(WorkItemType eq 'User Story')
Filtre los descendientes para que solo incluyan casos de usuario (omite tareas y errores).
/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)
Para todos los descendientes que coinciden con la cláusula filter, los cuenta y suman la StoryPoints
propiedad .
)
Cierre Descendants()
.
Resumen de puntos a las características de casos de usuario secundarios basados en Teams
Las consultas siguientes muestran cómo generar informes acumulativos filtrados por nombre de equipo en lugar de ruta de acceso de á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/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Cut'"
&" 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 Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Resumen de historias apunta a epopeyas
Puede resumir los puntos del artículo a Epics mediante las siguientes 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/WorkItems?"
&"$filter=WorkItemType eq 'Epic'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any(d:d/WorkItemType eq 'User Story')"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate(StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Tareas de acumulación trabajo restante y trabajo completado en casos de usuario
En la consulta siguiente se muestra cómo acumular trabajo restante y trabajo completado asignado a tareas secundarias a casos de usuario en la jerarquía. Estas consultas suponen que las tareas se asignan como elementos secundarios de un caso de usuario en la ruta de acceso de área especificada.
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/WorkItems?"
&"$filter=WorkItemType eq 'User Story'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Task')"
&"/aggregate(RemainingWork with sum as TotalRemainingWork, CompletedWork with sum as TotalCompletedWork)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Recuento de errores acumulativos en características
Las consultas siguientes muestran cómo acumular el recuento de errores asignados a características. Estas consultas suponen que los errores se definen como elementos secundarios de una característica en la ruta de acceso de área especificada.
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/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Bug')"
&"/aggregate($count as CountOfBugs)"
&")",
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.
Expansión de columnas en Power BI
La &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)
cláusula devuelve registros que contienen varios campos. Antes de crear el informe, debe expandir el registro para aplanarlo en campos específicos. En este caso, querrá expandir los registros siguientes:
AssignedTo
AreaPath
IterationPath
Para obtener información sobre cómo hacerlo, consulte Transformación de datos de Análisis para generar informes de Power BI.
(Opcional) Cambiar nombre de los campos
Una vez que haya expandido las columnas, puede que desee cambiar el nombre de uno o varios campos. Por ejemplo, puede cambiar el nombre de la columna AreaPath
a Area Path
. Para obtener información sobre cómo hacerlo, consulte Cambiar el nombre de los campos de columna.
Reemplazar valores NULL en campos acumulativos
Si un elemento de trabajo no tiene elementos secundarios, el valor acumulativo puede ser NULL. Por ejemplo, Descendants.CountOfUserStories es "null" si una característica no tiene historias de usuario secundarias.
Para facilitar la creación de informes, reemplace todos los valores NULL por cero siguiendo estos pasos.
- Seleccione la columna haciendo clic en el encabezado de columna.
- Seleccione el menú Transformar .
- Seleccione Reemplazar valores. Aparece el cuadro de diálogo Reemplazar valores .
- Escriba "null" en Valor para buscar.
- Escriba "0" en Reemplazar por.
- Elija Aceptar.
Repita para todas las columnas de acumulación.
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.
Creación del informe de tabla
En Power BI, elija el informe Tabla en Visualizaciones.
Agregue los siguientes campos a Columnas en el orden indicado:
WorkItemI
, elija No resumir para mostrar el identificador si es necesario.WorkItemType
Title
State
Count of User Stories
Total Story Points
.
Se muestra el informe de ejemplo.
Artículos relacionados
- Exploración de informes de ejemplo mediante consultas de OData
- Construcción de consultas de OData para Analytics
- Conexión a Power BI mediante consultas de OData
- Consulte los metadatos de Azure Boards Analytics.
- Acceso a informes de ejemplo y índice de referencia rápida
- Agregar una segmentación de equipo a un informe existente