Agregar dados de acompanhamento de trabalho usando o Analytics

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

Você pode obter uma soma de seus dados de acompanhamento de trabalho de uma das duas maneiras usando o Analytics com o OData. O primeiro método retorna uma contagem simples de itens de trabalho com base na consulta OData. O segundo método retorna um resultado formatado em JSON com base na consulta OData que exerce a Extensão de Agregação OData.

Este artigo cria informações fornecidas em Construir consultas OData para Análise e Definir consultas básicas usando o OData Analytics. Além disso, as consultas neste artigo se concentram na recuperação de dados de item de trabalho, no entanto, os princípios se aplicam para consultar outros conjuntos de entidades.

Neste artigo, você aprenderá sobre:

  • Sobre a extensão de agregação OData
  • Como usar a Extensão de Agregação para OData
  • Como agrupar e filtrar resultados agregados
  • Como agregar dados para gerar um diagrama de Fluxo Cumulativo

Para saber como gerar contagens simples, consulte Retornar uma contagem de itens (nenhum outro dado) e Retornar uma contagem de itens e dados.

Observação

O serviço de Análise é habilitado automaticamente e tem suporte em produção para todos os Azure DevOps Services. A integração do Power BI e o acesso ao feed OData do Serviço de Análise estão em disponibilidade geral. Recomendamos que você o use e nos envie comentários. Os dados disponíveis dependem da versão. A versão mais recente com suporte é v2.0e a versão prévia mais recente é v4.0-preview. Para obter mais informações, consulte Controle de versão da API OData.

Observação

O serviço Analytics é instalado automaticamente e tem suporte em produção para todas as novas coleções de projetos para Azure DevOps Server 2020 e versões posteriores. A integração do Power BI e o acesso ao feed OData do Serviço de Análise estão em disponibilidade geral. Recomendamos que você o use e nos envie comentários. Se você atualizou do Azure DevOps Server 2019, poderá instalar o serviço de Análise durante a atualização.

Os dados disponíveis dependem da versão. A versão mais recente com suporte é v2.0e a versão prévia mais recente é v4.0-preview. Para obter mais informações, consulte Controle de versão da API OData.

Observação

O serviço de Análise está em versão prévia para Azure DevOps Server 2019. Você pode habilitá-lo ou instalá-lo para uma coleção de projetos. A integração do Power BI e o acesso ao feed OData do Serviço de Análise estão em Versão Prévia. Recomendamos que você o use e nos envie comentários.

Os dados disponíveis dependem da versão. A versão mais recente com suporte é v2.0e a versão prévia mais recente é v4.0-preview. Para obter mais informações, consulte Controle de versão da API OData.

O que é a Extensão de Agregação para OData?

A análise depende do OData para criar consultas em seus dados de acompanhamento de trabalho. As agregações no OData são obtidas usando uma extensão que introduz o $apply palavra-chave. Temos alguns exemplos de como usar esse palavra-chave abaixo. Saiba mais sobre a extensão na Extensão OData para Agregação de Dados.

Agregar dados usando a extensão de agregação OData

Agora que você viu como fazer contagens simples, vamos examinar como disparar agregações usando o $apply token em que o formato básico no final da URL é o seguinte:

/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})

Em que:

  • {entitySetName} é a entidade que precisa ser consultada
  • {columnToAggregate} é a coluna de agregação
  • {aggregationType} especificará o tipo de agregação usada
  • {newColumnName} especifica o nome da coluna que tem valores após a agregação.

Dados agregados usando a extensão apply

Usando a $apply extensão, você pode obter contagens, somas e informações adicionais ao consultar seus dados de acompanhamento de trabalho.

Retornar a soma de todo o trabalho restante

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(RemainingWork with sum as SumOfRemainingWork)

Retornar o último identificador de item de trabalho

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(WorkItemId with max as MaxWorkItemId)

Agrupar resultados usando a cláusula groupby

A extensão de agregação OData também dá suporte a uma groupby cláusula idêntica à cláusula SQL GROUP BY . Você pode usar essa cláusula para dividir rapidamente os números com mais detalhes.

Por exemplo, a seguinte cláusula thie retorna uma contagem de itens de trabalho:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate($count as Count)

Adicione a groupby cláusula para retornar uma contagem de itens de trabalho por tipo:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType), aggregate($count as Count))

Ele retorna um resultado semelhante a este exemplo:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
    {
      "@odata.id":null,"WorkItemType":"Bug","Count":3
    },
    {
      "@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
    }
  ]
}

Você também pode agrupar por várias propriedades como neste exemplo:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType, State), aggregate($count as Count))

Ele retorna um resultado semelhante a este exemplo:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Bug",
      "Count": 2
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Bug",
      "Count": 1
    },
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Product Backlog Item",
      "Count": 5
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Product Backlog Item",
      "Count": 8
    }
  ]
}

Você também pode agrupar entre entidades, no entanto, o agrupamento OData difere de como você normalmente pode pensar sobre isso.

Por exemplo, suponha que você queria saber quantas áreas estão em cada projeto em uma organização ou coleção. No OData, "contar todas as áreas e agrupá-las por projeto" é equivalente a "me dar todos os projetos e uma contagem de áreas para cada projeto". Isso resulta em uma consulta semelhante a:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $apply=groupby((Project/ProjectName), aggregate($count as Count))

Filtrar resultados agregados

Você também pode filtrar os resultados agregados, no entanto, eles são aplicados um pouco diferente do que quando você não está usando a agregação. A análise avalia os filtros ao longo de um pipe, portanto, é sempre melhor fazer a filtragem mais discreta primeiro.

Os filtros se parecem com este exemplo:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=
    filter(Iteration/IterationName eq 'Sprint 89')/
    filter(WorkItemType eq 'User Story')/
    groupby((State), aggregate($count as Count))

Observação

Você não precisa fornecer a groupby cláusula . Você pode simplesmente usar a aggregate cláusula para retornar um único valor.

Gerar várias agregações em uma única chamada

Talvez você queira fornecer várias informações. Um exemplo é a soma do trabalho concluído e, separadamente, a soma do trabalho restante. Nesse caso, você pode fazer chamadas separadas ou uma única chamada da seguinte maneira:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)

Ele retornará um resultado semelhante a este exemplo:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
    }
  ]
}

Gerar propriedades calculadas para uso em uma única chamada

Talvez seja necessário usar uma expressão matemática para calcular propriedades para uso em um conjunto de resultados. Um exemplo é a soma do trabalho concluído dividido pela soma do trabalho concluído mais a soma do trabalho restante para calcular o percentual de trabalho concluído. Nesse caso, você pode usar este exemplo:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
    }
  ]
}

Gerar um diagrama de fluxo cumulativo de dados agregados

Digamos que você queira criar um diagrama de fluxo cumulativo no Power BI. Você pode usar uma consulta semelhante à abaixo:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue

Ele retorna um resultado semelhante a este exemplo. Em seguida, você pode usá-lo diretamente na visualização de dados de sua escolha.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
  "value": [
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 324,
       "ColumnName": "Completed"
    },
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 5,
      "ColumnName": "In Progress"
    }
  ]
}

Vamos dar uma olhada no que essa consulta realmente faz:

  • Filtra os dados para uma equipe específica
  • Filtra os dados para uma lista de pendências específica
  • Retorna uma contagem de itens de trabalho.

Ao atualizar o Power BI ou o Excel, quanto menos linhas forem necessárias, mais rápido ocorrerá a atualização.

Próximas etapas