Partilhar via


Relatório de exemplo de progresso agregado de recursos

Azure DevOps Serviços | Azure DevOps Server | Azure DevOps Server 2022

Este artigo mostra como criar um relatório de barras empilhadas para exibir o progresso dos Recursos com base em Histórias de Usuário infantis concluídas. O relatório exibe a porcentagem concluída por agregação de Pontos de História para um determinado conjunto de Funcionalidades ativas. Você pode visualizar gráficos de barras de progresso semelhantes da sua lista de pendências ao adicionar uma coluna de resumo. Para saber como, consulte Exibir progresso ou totais do rollup.

Quando cria relatórios de rollup usando o Power BI, pode encontrar problemas relacionados com dados aninhados nos seus conjuntos de dados. Especificamente, tentar dinamizar uma tabela que contém colunas com dados aninhados pode resultar em uma mensagem de erro. Para obter mais informações, consulte a seção sobre Tratamento de dados aninhados.

Pré-requisitos

Categoria Requerimentos
Níveis de acesso - Membro do projeto.
- Pelo menos acesso básico .
Permissões Por padrão, os membros do projeto têm permissão para consultar o Google Analytics e criar modos de exibição. Para obter mais informações sobre outros pré-requisitos relacionados com a ativação de serviços e funcionalidades e atividades gerais de monitorização de dados, consulte Permissões e pré-requisitos para aceder ao Analytics.

Nota

Este artigo assume que lê Visão geral de relatórios de exemplo usando consultas OData e que tem uma compreensão básica de Power BI.

Exemplos de Consultas

A consulta de progresso interroga a entidade WorkItems para obter o estado atual do avanço.

Nota

Para encontrar as propriedades disponíveis para filtragem ou relatório, consulte a referência Metadados para Azure Boards. Pode filtrar consultas ou devolver propriedades usando qualquer Property valor definido sob um EntityType, ou qualquer NavigationPropertyBinding Path valor listado para um EntitySet. Cada EntitySet corresponde a um EntityType, que documenta o tipo de dados para cada propriedade.

Revisar o progresso da funcionalidade com base num caminho de área

Copie e cole a seguinte consulta do Power BI diretamente na janela Obter Dados>Consulta em Branco. 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,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(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 pelos teus valores. Não inclua as chaves {} na 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} - Caminho da sua área. Formato de exemplo: Project/Level1/Level2.

Detalhamento da consulta

A tabela a seguir descreve cada parte da consulta.

Parte da consulta

Descrição


$filter=WorkItemType eq 'Feature'

Funcionalidades de Retorno.

and State ne 'Removed'

Omitir as funcionalidades marcadas como removidas.

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

Retornar itens de trabalho em um Caminho de Área específico. A substituição por Area/AreaPath eq '{areapath}' retorna itens 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()

Filtre todos os itens de trabalho que tenham pelo menos um ou "qualquer" descendente. Inclui todas as funcionalidades com pelo menos um subitem de trabalho. Para obter todos os itens de trabalho com seus descendentes, mesmo que eles não tenham nenhum, execute uma consulta sem o Descendants/any() filtro. Para omitir Funcionalidades que não têm Histórias de Utilizador filhas, substitua por any(d:d/WorkItemType eq 'User Story').

Para todos os itens de trabalho com e sem descendentes:

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

Para todos os itens de trabalho com pelo menos um descendente:

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

Selecione as propriedades a serem retornadas.

&$expand=Descendants(

Início da cláusula de expansão Descendants

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

Filtre os descendentes. Inclua apenas Histórias de Utilizador (omita Tarefas e Erros).

/groupby((StateCategory),

Agrupe a agregação por StateCategory. Para obter mais informações sobre Categorias de Estado, consulte Como os estados do fluxo de trabalho e as categorias de estado são usados em Listas de Pendências e Painéis.

aggregate(StoryPoints with sum as TotalStoryPoints))

Soma total de Pontos de História.

)

Fechar a cláusula Descendants().

Revisar o progresso do recurso para uma equipe

A consulta seguinte é igual à que usou anteriormente, mas filtra por Nome da Equipa em vez de Caminho de Área.

Copie e cole a seguinte consulta do Power BI diretamente na janela Obter Dados>Consulta em Branco. 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=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Transformar os dados no Editor do Power Query

A consulta retorna várias colunas que você precisa expandir antes de poder usá-las para criar um relatório. Qualquer entidade que extraias usando uma instrução OData $expand devolve um registo com potencialmente vários campos. Expanda o registro para nivelar a entidade em seus campos.

Para o Relatório de Progresso da Funcionalidade, realize as seguintes transformações:

  • Expanda a Descendants coluna para duas colunas: Descendants.StateCategory e Descendants.TotalStoryPoints.
  • Aplique a transformação da Coluna Pivot na Descendants.StateCategory coluna para separar as categorias individuais de Estado .
  • Substitua valores nulos em todas as colunas dinâmicas.
  • Adicione uma coluna personalizada que represente a porcentagem concluída. A coluna personalizada exibe erros se houver colunas nulas nas colunas de Estado pivotadas.

Para saber como, veja Transform Analytics dados para gerar relatórios Power BI.

Tratamento de dados aninhados

Antes de realizar uma operação de pivot, certifique-se de que o seu conjunto de dados não contém colunas com dados aninhados. Siga estes passos:

  1. Identificar colunas aninhadas: verifique se há colunas no conjunto de dados que possam conter listas, registros ou tabelas em uma única célula.
  2. Achatar ou remover dados aninhados: Remover as colunas aninhadas ou achatá-las expandindo para colunas separadas usando a funcionalidade Expandir em Power Query.
  3. Realize a operação de cruzamento: Depois de tratar os dados aninhados, pode prosseguir com a operação de cruzamento sem encontrar erros.

Nota

Neste exemplo, os valores de Estado para User Story incluem Proposed, In Progress e Completed.

Feche a consulta e aplique as alterações

Quando terminares todas as transformações de dados, seleciona Fechar e Aplicar no menu Inicial . Esta ação guarda a consulta e devolve-o ao separador Report no Power BI.

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

Criar relatório de gráfico de barras empilhadas

  1. No Power BI, selecione Gráfico de barras empilhado em Visualizações.

    Captura de ecrã das visualizações e seleções de campos do Power BI para o relatório de gráfico de barras empilhadas Progresso das Funcionalidades.

  2. Adicionar Title ao eixo Y.

  3. Adicione PercentComplete ao Eixo X, clique com o botão direito do mouse e selecione Soma.

O relatório de exemplo é exibido.

Captura de ecrã do relatório de gráfico de barras empilhadas do Progresso da Funcionalidade de Exemplo.