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.