Compartilhar via


Relatório de exemplo de agregação de progresso de funcionalidades

Azure DevOps Services | 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 filho concluídas. O relatório exibe a porcentagem concluída pela agregação de Story Points para um determinado conjunto de funcionalidades ativas. Você pode exibir gráficos de barras de progresso semelhantes em sua lista de pendências adicionando uma coluna de resumo. Para saber como, consulte Exibir o progresso ou os totais acumulados.

Ao criar relatórios cumulativos usando Power BI, você pode encontrar problemas relacionados a dados aninhados em seus conjuntos de dados. Especificamente, tentar pivotar 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 como lidar com dados aninhados.

Pré-requisitos

Categoria Requisitos
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 Analytics e criar visualizações. Para obter mais informações sobre outros pré-requisitos relacionados à ativação de serviços e recursos e atividades gerais de rastreamento de dados, consulte Permissões e pré-requisitos para acessar o Analytics.

Observação

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

Consultas de exemplo

O progresso da funcionalidade consulta a entidade WorkItems para obter o estado atual do progresso.

Observação

Para localizar as propriedades disponíveis para filtragem ou relatório, consulte a referência Metadata para Azure Boards. Você pode filtrar consultas ou retornar propriedades usando qualquer valor Property definido em um EntityType ou qualquer valor NavigationPropertyBinding Path listado para um EntitySet. Cada EntitySet mapeia para um EntityType, que documenta o tipo de dados de cada propriedade.

Revisar o progresso da funcionalidade com base em um caminho de área

Copie e cole a consulta Power BI a seguir diretamente na janela Get Data>Blank Query. 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 cadeias de caracteres a seguir por seus valores. Não inclua as chaves {} na 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 omita /{project} totalmente, para uma consulta entre projetos
  • {areapath} - Seu caminho de á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'

Recursos de retorno.

and State ne 'Removed'

Omita recursos marcados como Removidos.

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

Retorne itens de trabalho em um Caminho de Área específico. Substituir 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}')filtro.

and Descendants/any()

Filtre todos os itens de trabalho que tenham pelo menos um ou "qualquer" descendente. Inclui todos os Features com pelo menos um item de trabalho filho. 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 Recursos que não têm Histórias de Usuário 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 expand Descendants

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

Filtre os descendentes. Inclua apenas histórias de usuário (omita tarefas e bugs).

/groupby((StateCategory),

Agrupe a consolidação por categoria de estado. Para obter mais informações sobre Categorias de Estado, consulte Como estados de fluxo de trabalho e categorias de estado são usados em Backlogs e Boards.

aggregate(StoryPoints with sum as TotalStoryPoints))

Soma total de pontos de história.

)

Fechar cláusula Descendants().

Rever o progresso da funcionalidade para uma equipe

A consulta a seguir é a mesma que você usou anteriormente, mas é filtrada pelo Nome da Equipe em vez do Caminho da Área.

Copie e cole a consulta Power BI a seguir diretamente na janela Get Data>Blank Query. 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 em Editor do Power Query

A consulta retorna várias colunas que você precisa expandir antes de usá-las para criar um relatório. Qualquer entidade que você obtém usando uma instrução OData $expand retorna um registro que pode conter vários campos. Expanda o registro para nivelar a entidade em seus campos.

Para o relatório de progresso do recurso, execute as seguintes transformações:

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

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

Manipulando dados aninhados

Antes de executar uma operação de pivô, verifique se o conjunto de dados não contém colunas com dados aninhados. Siga estas etapas:

  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. Flatten ou remover dados aninhados: remova as colunas aninhadas ou nivele-as expandindo-as em colunas separadas usando o recurso Expand em Power Query.
  3. Execute a operação de pivô: depois de abordar os dados aninhados, você pode continuar com a operação de pivô sem encontrar erros.

Observação

Neste exemplo, os valores de Estado para História do Usuário incluem Proposto, Em Andamento e Concluído.

Feche a consulta e aplique suas alterações

Ao concluir todas as transformações de dados, selecione Fechar &Aplicar no menu Página Inicial . Essa ação salva a consulta e retorna você para a guia Report no Power BI.

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

Crie o relatório de gráfico de barras empilhadas

  1. Em Power BI, selecione Stacked bar chart em Visualizations.

    Captura de tela de seleções de Visualizações e Campos do Power BI para o relatório de gráfico de barras empilhadas sobre o Progresso do Recurso.

  2. Adicione Title ao Eixo Y.

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

O relatório de exemplo é exibido.

Captura de tela do relatório de gráfico de barras empilhadas de progresso do Sample Feature.