Compartilhar via


Relatório de exemplo de rollup de progresso de recursos

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 por rollup de Story Points para um determinado conjunto de recursos ativos. Você pode exibir gráficos de barras de progresso semelhantes em sua lista de pendências adicionando uma coluna de acúmulo. Para saber como, consulte Exibir o progresso ou os totais acumulados.

Ao criar relatórios de acúmulo usando o Power BI, você pode encontrar problemas relacionados a dados aninhados em seus conjuntos de dados. Especificamente, a tentativa de 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 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ê leia Visão geral dos relatórios de exemplo usando consultas OData e tenha uma compreensão básica do Power BI.

Consultas de exemplo

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

Observação

Para determinar as propriedades disponíveis para fins de filtro ou relatório, consulte Referência de metadados para Azure Boards. 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 corresponde a um EntityType. Para obter mais informações sobre o tipo de dados de cada valor, examine os metadados fornecidos para o EntityType.

Revisar o progresso do recurso com base em um caminho de área

Copie e cole a seguinte consulta do Power BI 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,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 pelos valores. Não inclua colchetes {} com sua substituição. Por exemplo, se o nome da sua organização for "Fabrikam", substitua por {organization}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 'Cut'

Omita recursos marcados como Corte.

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})'filter .

and Descendants/any()

Filtre todos os itens de trabalho que tenham pelo menos um ou "qualquer" descendente. Inclui todos os recursos 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 o pacote cumulativo por StateCategory. Para obter mais informações sobre Categorias de Estado, consulte Como estados de fluxo de trabalho e categorias de estado são usados em Listas de pendências e quadros.

aggregate(StoryPoints with sum as TotalStoryPoints))

Soma agregada de Pontos de História.

)

Cláusula de fechamento Descendants() .

Examinar o progresso do recurso para uma equipe

A consulta a seguir é a mesma usada anteriormente, exceto que filtra por Nome da Equipe em vez de Caminho da Área.

Copie e cole a seguinte consulta do Power BI 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=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 usá-las para criar um relatório. Qualquer entidade extraída usando uma instrução OData $expand retorna um registro com potencialmente vários campos. Expanda o registro para nivelar a entidade em seus campos.

Para o relatório de progresso do recurso, você precisa realizar as seguintes transformações:

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

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

Manipulando dados aninhados

Antes de executar uma operação dinâmica, 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. Nivelar ou remover dados aninhados: você pode remover as colunas aninhadas ou nivelá-las expandindo-as em colunas separadas usando o recurso "Expandir" no Power Query.
  3. Execute a operação de pivô: depois de abordar os dados aninhados, você pode prosseguir 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

Depois de concluir todas as transformações de dados, escolha Fechar e Aplicar no menu Página Inicial para salvar a consulta e retornar à guia Relatório no Power BI.

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

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

  1. No Power BI, escolha Relatório de gráfico de barras empilhadas em Visualizações.

    Captura de tela das seleções de Visualizações e Campos do Power BI para o relatório de gráfico de barras empilhadas 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 recurso de amostra.