Acumular valores de item de trabalho filho para relatório de amostra pai

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

O Rollup fornece suporte para mostrar uma contagem de itens de trabalho ou soma de Pontos de História, Trabalho Restante ou outro campo personalizado de itens filho. Este artigo fornece vários exemplos de como gerar um relatório cumulativo tabular para épicos, recursos ou histórias de usuário que contêm itens de trabalho filho. A imagem a seguir mostra um exemplo de Pontos de História acumulados para os Recursos pai.

Captura de tela do relatório de matriz de pacote cumulativo de recursos.

Para saber mais sobre o pacote cumulativo e as opções para mostrar o pacote cumulativo, consulte Exibir o progresso ou totais do pacote cumulativo nos Painéis do Azure.

Nota

Este artigo pressupõe que você leu Visão geral de relatórios de exemplo usando consultas OData e tem uma compreensão básica do Power BI.

Pré-requisitos

  • Para visualizar dados do Google Analytics e consultar o serviço, você precisa ser membro de um projeto com acesso Básico ou superior. Por padrão, todos os membros do projeto recebem permissões para consultar o Google Analytics e definir exibições do Google Analytics.
  • Para saber mais sobre outros pré-requisitos relacionados à ativação de serviços e recursos e atividades gerais de controle de dados, consulte Permissões e pré-requisitos para acessar o Google Analytics.

Consultas de amostra

As consultas a seguir retornam dados do WorkItems conjunto de entidades para dar suporte à geração de relatórios de matriz de rollup.

Nota

Para determinar as propriedades disponíveis para fins de filtro ou relatório, consulte Referência de metadados para painéis do Azure. Você pode filtrar suas consultas ou retornar propriedades usando qualquer um dos Property valores em um EntityType ou NavigationPropertyBinding Path valores disponíveis com um EntitySet. Cada EntitySet um corresponde a um EntityTypearquivo . Para saber mais sobre o tipo de dados de cada valor, revise os metadados fornecidos para o .EntityType

A história do rollup aponta para recursos de histórias de usuários infantis com base no caminho da área

Você pode colar a consulta do Power BI listada abaixo diretamente na janela Obter consulta em branco de dados>. Para obter mais informações, consulte Visão geral de relatórios de exemplo usando consultas 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

Cadeias de caracteres de substituição e detalhamento de consulta

Substitua as seguintes cadeias de caracteres por seus valores. Não inclua parênteses com a {} sua substituição. Por exemplo, se o nome da sua organização for "Fabrikam", substitua {organization} por Fabrikam, não {Fabrikam}.

  • {organization} - Nome da sua organização
  • {project} - O nome do seu projeto de equipe, ou omitir "/{project}" completamente, para uma consulta entre projetos
  • {areapath} - O Caminho da Sua Área. Exemplo de formato: Project\Level1\Level2.

Detalhamento da consulta

A tabela a seguir descreve cada parte da consulta.

Parte da consulta

Descrição

$filter=WorkItemType eq 'Feature'

Retornar recursos.

and State ne 'Cut'

Omitir bugs fechados.

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

Retornar itens de trabalho em um Caminho de Área específico, substituindo Area/AreaPath eq '{areapath}' itens de retorno em um Caminho de Área específico. Para filtrar por Nome da Equipe, use a instrução Teams/any(x:x/TeamName eq '{teamname})'filter .

and Descendants/any()

Inclua todos os recursos, mesmo aqueles sem histórias de usuário. Substitua por "any(d:d/WorkItemType eq 'User Story')" para omitir Recursos que não têm Histórias de Usuário filhas.

&$select=WorkItemId, Title, WorkItemType, State

Selecione os campos a serem retornados.

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

Selecione campos AssignedTode propriedade expansíveis , Iteration, Area.

Descendants(

Expanda a Descendants cláusula.

$apply=filter(WorkItemType eq 'User Story')

Filtre os descendentes para incluir apenas Histórias de Usuário (omite tarefas e bugs).

/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)

Para todos os descendentes que correspondem à cláusula de filtro, conte-os e some a StoryPoints propriedade.

)

Feche Descendants().

Rollup Story aponta para recursos de histórias de usuários infantis com base no Teams

As consultas a seguir mostram como gerar relatórios cumulativos filtrando por nome da equipe em vez de Caminho de Área.

Você pode colar a consulta do Power BI listada abaixo diretamente na janela Obter consulta em branco de dados>. Para obter mais informações, consulte Visão geral de relatórios de exemplo usando consultas 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

História do Rollup aponta para épicos

Você pode acumular pontos de história para Épicos usando as seguintes consultas.

Você pode colar a consulta do Power BI listada abaixo diretamente na janela Obter consulta em branco de dados>. Para obter mais informações, consulte Visão geral de relatórios de exemplo usando consultas 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

Tarefas de agregação Trabalho Restante e Trabalho Concluído para Histórias de Usuário

A consulta a seguir mostra como acumular Trabalho Restante e Trabalho Concluído atribuídos a Tarefas filhas para Histórias de Usuário na hierarquia. Essas consultas pressupõem que as Tarefas são atribuídas como filhos de uma História de Usuário no Caminho de Área especificado.

Você pode colar a consulta do Power BI listada abaixo diretamente na janela Obter consulta em branco de dados>. Para obter mais informações, consulte Visão geral de relatórios de exemplo usando consultas 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

Rollup Contagem de bugs para recursos

As consultas a seguir mostram como acumular a contagem de bugs atribuídos aos recursos. Essas consultas pressupõem que os Bugs são definidos como filhos de um Recurso no Caminho de Área especificado.

Você pode colar a consulta do Power BI listada abaixo diretamente na janela Obter consulta em branco de dados>. Para obter mais informações, consulte Visão geral de relatórios de exemplo usando consultas 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) Renomear consulta

Você pode renomear o rótulo de consulta padrão, Query1, para algo mais significativo. Basta inserir um novo nome no painel Configurações de consulta.

Captura de ecrã das opções do menu de consulta do Power BI, consulta de mudança de nome.

Expandir colunas no Power BI

A &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath) cláusula retorna registros que contêm vários campos. Antes de criar o relatório, você precisa expandir o registro para nivelá-lo em campos específicos. Nesse caso, você desejará expandir os seguintes registros:

  • AssignedTo
  • AreaPath
  • IterationPath

Para saber como, consulte Transformar dados do Google Analytics para gerar relatórios do Power BI.

(Opcional) Renomear campos

Depois de expandir as colunas, convém renomear um ou mais campos. Por exemplo, você pode renomear a coluna AreaPath para Area Path. Para saber como, consulte Renomear campos de coluna.

Substituir valores nulos em campos de rollup

Se um item de trabalho não tiver filhos, o valor cumulativo poderá ser nulo. Por exemplo, Descendants.CountOfUserStories é "nulo" se um recurso não tiver histórias de usuário filhas.

Para facilitar a geração de relatórios, substitua todos os nulos por zero seguindo estas etapas.

  1. Selecione a coluna clicando no cabeçalho da coluna.
  2. Selecione o menu Transformar .
  3. Selecione Substituir valores. A caixa de diálogo Substituir valores é exibida.
  4. Digite "null" em Value to Find.
  5. Digite "0" em Substituir por.
  6. Escolha OK.

Repita para todas as colunas de rollup.

Feche a consulta e aplique as alterações

Depois de concluir todas as suas transformações de dados, escolha Fechar & Aplicar no menu Início para salvar a consulta e retornar à guia Relatório no Power BI.

Captura de ecrã da opção Fechar e Aplicar do Power Query Editor.

Criar o relatório Tabela

  1. No Power BI, escolha o relatório Tabela em Visualizações.

    Captura de ecrã do relatório de seleções de Visualizações e Campos do Power BI para a tabela de Rollup.

  2. Adicione os seguintes campos a Colunas na ordem indicada:

    • WorkItemI, escolha Não resumir para mostrar a ID, se necessário
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

O relatório de exemplo é exibido.

Captura de tela do relatório de matriz de pacote cumulativo de recursos de exemplo.