Liberar consultas e relatórios de exemplo de burndown

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Os relatórios de burndown e burnup mostram quanto trabalho está sendo concluído ao longo do tempo. A imagem a seguir mostra o burndown por contagem de Histórias de Usuário e soma de Pontos de História.

Captura de tela do relatório de gráfico de colunas clusterizadas do burndown da versão do Power BI.

Os gráficos de burndown só fazem sentido se você planejar seu trabalho para o período de tempo do gráfico. Caso contrário, se você planejar sprint a sprint, não verá um burndown padrão. Nesses casos, um gráfico de burnup faz mais sentido para ver como o progresso é feito ao longo do tempo.

Importante

  • A exclusão de caminhos de área ou a reconfiguração de caminhos de iteração causam perda irreversível de dados. Por exemplo, gráficos de widget de burndown e burnup, burndown de sprint e gráficos de velocidade para equipes com Caminhos de Área alterados não exibirão dados precisos. Os gráficos de tendências históricas fazem referência ao Caminho da Área e ao Caminho da Iteração conforme foram definidos no momento para cada item de trabalho. Depois de excluídos, você não poderá recuperar dados históricos para esses caminhos.
  • Você só pode excluir caminhos de área e iteração que não são mais usados por nenhum item de trabalho.

Para obter mais informações sobre burndown e burnup, consulte Configurar um widget de burndown ou burnup e Diretrizes de burndown e burnup.

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.

Pré-requisitos

Consultas de exemplo

As consultas nesta seção mostram como gerar gráficos de burndown de itens de trabalho com base em dados históricos. Todas essas consultas especificam o WorkItemSnapshot conjunto de entidades.

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.

Burndown de Histórias de Usuário em um caminho de área a partir da data de início e término

A consulta a seguir mostra como retornar dados históricos de Histórias de Usuário para uma versão com base em itens de trabalho marcados com uma marca de versão.

Observação

Para relatórios baseados na filtragem de uma tag, a tag deve ser atribuída ao item de trabalho no início da data de lançamento ou início do burndown/burnup. Caso contrário, o item de trabalho não será incluído nos dados retornados.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, 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 totalmente "/{project}" para uma consulta entre projetos
  • {areapath} - Seu caminho de área. Formato de exemplo: Project\Level1\Level2
  • {tag} - Uma tag que representa sua versão. Todos os itens de trabalho marcados com {tagname} são incluídos no relatório
  • {startdate} - A data para iniciar o relatório de burndown com o formato: YYYY-MM-DDZ. Por exemplo: 2022-04-01Z representa 01 de abril de 2022. Não coloque entre aspas.
  • {enddate} - A data para encerrar o relatório de burndown.

Detalhamento da consulta

A tabela a seguir descreve cada parte da consulta.

Parte da consulta

Descrição

$apply=filter(WorkItemType eq 'User Story'

Inclua Histórias de Usuário no burndown.

and StateCategory ne 'Completed'

Filtra os itens concluídos. 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.

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

Inclua apenas Histórias de Usuário em um Caminho de Área específico, substituindo '{areapath}'.
Para filtrar por um nome de equipe, use a instrução Teams/any(x:x/TeamName eq '{teamname})'filter .

and Tags/any(x:x/TagName eq '{tagname}').

Especifica o rótulo de marca que representa a versão a ser expandida e para incluir todos os itens de trabalho marcados com {tagname} no relatório.

and DateValue ge {startdate}

Inicie o burndown na data especificada ou após. Exemplo: 2019-04-01Z representa 01/abril de 2019.

and DateValue le {enddate}

Inicie o burndown até a data especificada. Mesmo formato de {startdate}.

)

Cláusula de fechamento filter() .

/groupby (

Cláusula de início groupby() .

(DateValue, State, Area/AreaPath),

Agrupar por DateValue (usado para tendências) e todos os campos sobre os quais você deseja gerar relatórios.

aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints)

Agregar por contagem de histórias de usuários e soma de Story Points.

)

Cláusula de fechamento groupby() .

Burndown de histórias de usuário para uma equipe

A consulta a seguir retorna dados de burndown filtrados 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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"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 Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Histórias de usuário de burndown com um instantâneo todas as sextas-feiras

O uso de um instantâneo semanal reduz a quantidade de dados extraídos para o Power BI e aumenta o desempenho da consulta.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Histórias de usuário de burndown com base em uma área e caminho de iteração

Algumas organizações usam caminhos de iteração para marcar histórias para uma versão. Por exemplo, eles podem ter um Caminho de Iteração de MyProject\Release1. A consulta a seguir mostra como selecionar Histórias de Usuário por Caminho de Iteração.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Histórias de usuário de burndown com um valor de campo personalizado

Algumas organizações usam um campo personalizado para marcar histórias de usuário para uma versão. Por exemplo, eles podem ter um campo chamado Marco. Esta consulta mostra como selecionar Histórias de Usuário por um campo personalizado.

Você precisará substituir ambos {customfieldname} e {releasevalue} na consulta. Para determinar o nome do campo personalizado, consulte Referência de metadados para Azure Boards, Propriedades personalizadas. Você substituirá {customfieldname} pelo nome da propriedade personalizada, por exemplo Custom_Milestone.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,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 tela das opções de menu de consulta do Power BI, renomear consulta.

Expandir colunas em Editor do Power Query

Antes de criar o relatório, você precisará expandir colunas que retornam registros que contêm vários campos. Nesse caso, você desejará expandir os seguintes registros:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

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

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 gráfico de colunas clusterizadas

  1. No Power BI, escolha Gráfico de colunas clusterizadas 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 colunas clusterizadas do burndown de versão.

  2. Adicione DateValue ao Eixo X, clique com o botão direito do mouse e selecione DateValue, em vez de Date Hierarchy

  3. Adicione Count ao Eixo Y.

  4. Adicione TotalStoryPoints ao Eixo Y.

O relatório de exemplo exibe burndown na contagem de Histórias e na soma ou Pontos de História.

Captura de tela do relatório de gráfico de colunas clusterizadas do burndown da Versão de Exemplo do Power BI.