Agregar dados de controlo de trabalho com a Análise

Serviços do Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Pode obter uma soma dos seus dados de controlo de trabalho de uma de duas formas através da Análise com OData. O primeiro método devolve uma contagem simples de itens de trabalho com base na consulta OData. O segundo método devolve um resultado formatado JSON com base na consulta OData que exerce a Extensão de Agregação OData.

Este artigo cria informações fornecidas em Consultas OData de Construção para Análise e Define basic queries using OData Analytics (Definir consultas básicas com o OData Analytics). Além disso, as consultas neste artigo focam-se na obtenção de dados de itens de trabalho. No entanto, os princípios aplicam-se à consulta de outros conjuntos de entidades.

Neste artigo, irá aprender:

  • Acerca da Extensão de Agregação OData
  • Como utilizar 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, veja Devolver uma contagem de itens (sem outros dados) e Devolver uma contagem de itens e dados.

Nota

O serviço Analytics é ativado e suportado automaticamente em produção para todos os Serviços do Azure DevOps. A integração e o acesso do Power BI ao feed OData do Serviço de Análise estão geralmente disponíveis. Encorajamo-lo a utilizá-lo e a dar-nos feedback. Os dados disponíveis dependem da versão. A versão suportada mais recente é v2.0, e a versão de pré-visualização mais recente é v4.0-preview. Para obter mais informações, veja Controlo de versões da API OData.

Nota

O serviço Analytics é instalado e suportado automaticamente em produção para todas as novas coleções de projetos para Azure DevOps Server 2020 e versões posteriores. A integração e o acesso do Power BI ao feed OData do Serviço de Análise estão geralmente disponíveis. Encorajamo-lo a utilizá-lo e a dar-nos feedback. Se atualizou a partir do Azure DevOps Server 2019, pode instalar o serviço Analytics durante a atualização.

Os dados disponíveis dependem da versão. A versão suportada mais recente é v2.0, e a versão de pré-visualização mais recente é v4.0-preview. Para obter mais informações, veja Controlo de versões da API OData.

Nota

O serviço Analytics está em pré-visualização para Azure DevOps Server 2019. Pode ativá-la ou instalá-la para uma coleção de projetos. A integração e o acesso do Power BI ao feed OData do Serviço de Análise estão em Pré-visualização. Encorajamo-lo a utilizá-lo e a dar-nos feedback.

Os dados disponíveis dependem da versão. A versão suportada mais recente é v2.0, e a versão de pré-visualização mais recente é v4.0-preview. Para obter mais informações, veja Controlo de versões da API OData.

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

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

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

Agora que já viu como fazer contagens simples, vamos rever como acionar agregações com o $apply token em que o formato básico no final do URL é o seguinte:

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

Em que:

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

Dados agregados com a extensão aplicar

Com a $apply extensão, pode obter contagens, somas e informações adicionais quando consulta os seus dados de controlo de trabalho.

Devolver a soma de todo o trabalho restante

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

Devolver o último identificador do item de trabalho

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

Agrupar resultados com a cláusula groupby

A extensão de agregação OData também suporta uma groupby cláusula idêntica à cláusula SQL GROUP BY . Pode utilizar esta cláusula para dividir rapidamente os números mais detalhadamente.

Por exemplo, a seguinte cláusula devolve 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 devolver uma contagem de itens de trabalho por tipo:

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

Devolve 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
    }
  ]
}

Também pode agrupar por múltiplas propriedades, tal como neste exemplo:

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

Devolve 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
    }
  ]
}

Também pode agrupar entre entidades, no entanto, o agrupamento OData difere da forma como normalmente pode pensar sobre o mesmo.

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

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

Filtrar os resultados agregados

Também pode filtrar os resultados agregados, no entanto, são aplicados de forma ligeiramente diferente do que quando não está a utilizar a agregação. A análise avalia os filtros ao longo de um pipe, pelo que é sempre melhor efetuar a filtragem mais discreta primeiro.

Os filtros têm o seguinte aspeto:

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))

Nota

Não tem de fornecer a groupby cláusula. Pode simplesmente utilizar a aggregate cláusula para devolver um único valor.

Gerar várias agregações numa única chamada

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

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

Irá devolver 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 utilização numa única chamada

Poderá ter de utilizar uma expressão matemática para calcular propriedades para utilização num conjunto de resultados. Um exemplo é a soma do trabalho concluído que é dividido pela soma do trabalho concluído e pela soma do trabalho restante para calcular a percentagem de trabalho concluído. Nesse caso, pode utilizar 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 a partir de dados agregados

Digamos que pretende criar um diagrama de fluxo cumulativo no Power BI. Pode utilizar 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

Devolve um resultado semelhante a este exemplo. Em seguida, pode utilizá-lo diretamente na sua visualização de dados à 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 ver o que esta consulta realmente faz:

  • Filtra os dados para uma equipa específica
  • Filtra os dados para um ficheiro de tarefas pendentes específicos
  • Devolve uma contagem de itens de trabalho.

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

Passos seguintes