Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
Pode agregar dados de acompanhamento de trabalho usando Analytics com OData de duas formas: usar $count para totais simples, ou usar a extensão de agregação OData $apply para devolver resultados agrupados, filtrados e calculados como JSON.
Sugestão
Pode usar IA para ajudar nesta tarefa mais adiante neste artigo, ou consultar Habilitar assistência de IA com Azure DevOps MCP Server para começar.
Este artigo baseia-se em Construir consultas OData para Análise e Definir consultas básicas usando OData Analytics. Os exemplos focam-se em dados de itens de trabalho, mas os mesmos princípios aplicam-se a outros conjuntos de entidades. Para consultas simples de contagem, veja Obter uma contagem de itens.
Nota
O serviço Analytics é automaticamente habilitado e suportado na produção para todos os serviços nos Serviços de DevOps do Azure. A integração do Power BI e o acesso ao feed OData do serviço Analytics estão geralmente disponíveis. Você é incentivado a usar o feed OData do Google Analytics e fornecer feedback.
Os dados disponíveis dependem da versão. A última versão suportada da API OData é v2.0, e a versão de visualização mais recente é v4.0-preview. Para obter mais informações, consulte o artigo Controlo de Versões da API OData.
Nota
O serviço Analytics é instalado automaticamente e suportado na produção para todas as novas coleções de projetos para o Azure DevOps Server 2020 e versões posteriores. A integração do Power BI e o acesso ao feed OData do serviço Analytics estão geralmente disponíveis. Você é incentivado a usar o feed OData do Google Analytics e fornecer feedback. Se você atualizar do Azure DevOps Server 2019, poderá instalar o serviço Analytics durante a atualização.
Os dados disponíveis dependem da versão. A última versão suportada da API OData é v2.0, e a versão de visualização mais recente é v4.0-preview. Para obter mais informações, consulte o artigo Controlo de Versões da API OData.
Pré-requisitos
| Categoria | Requerimentos |
|---|---|
| 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 Google Analytics e criar modos de exibição. Para obter mais informações sobre outros pré-requisitos relacionados à ativação de serviços e recursos e atividades gerais de controle de dados, consulte Permissões e pré-requisitos para acessar o Google Analytics. |
Sobre a extensão de agregação $apply
O OData fornece uma extensão de agregação que introduz a $apply palavra-chave para agrupar, filtrar e calcular valores agregados sobre os seus dados de acompanhamento de trabalho. As secções seguintes mostram como usar $apply com aggregate, groupby, filter, e compute. Para a especificação completa, veja Extensão OData para Agregação de Dados.
Agregar dados usando $apply
Anexe o $apply token à sua URL de consulta para desencadear agregações. A sintaxe básica é:
/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})
| Parâmetro | Descrição |
|---|---|
{entitySetName} |
A entidade definida para consulta, como WorkItems. |
{columnToAggregate} |
O campo a agregar, como RemainingWork. |
{aggregationType} |
A função de agregação: sum, min, max, average, ou countdistinct. |
{newColumnName} |
O alias da coluna de resultados agregados. |
Os exemplos seguintes mostram operações comuns aggregate .
Devolver 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 identificador do último item de trabalho
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(WorkItemId with max as MaxWorkItemId)
Resultados de grupo usando groupby
A groupby cláusula funciona como SQL GROUP BY — decompõe os resultados agregados por uma ou mais propriedades.
Contar itens de trabalho por tipo
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType), aggregate($count as Count))
Devolve um resultado como:
{
"value": [
{ "WorkItemType": "Bug", "Count": 3 },
{ "WorkItemType": "Product Backlog Item", "Count": 13 }
]
}
Agrupar por múltiplas propriedades
Adicione mais propriedades dentro dos groupby parênteses para criar divisões mais detalhadas:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType, State), aggregate($count as Count))
Devolve uma linha para cada combinação única de tipo e estado (por exemplo, Bug/Ativo, Bug/Comprometido, Item da Lista de Produtos Pendentes/Ativo).
Agrupar através de entidades
Pode agrupar entre entidades relacionadas usando propriedades de navegação. Por exemplo, para contar áreas por projeto:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
$apply=groupby((Project/ProjectName), aggregate($count as Count))
Filtrar resultados agregados
Utilize filter() dentro de $apply para restringir os dados antes ou depois da agregação. Encadeia vários filtros usando / (pipe) e coloca primeiro o filtro mais seletivo para melhor desempenho.
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
A groupby cláusula é opcional. Use aggregate apenas para devolver um único valor.
Agregar múltiplos campos numa única chamada
Liste vários campos dentro de uma única aggregate oração, separados por vírgulas, para evitar viagens de ida e volta extra.
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)
Devoluções:
{
"value": [
{ "SumOfCompletedWork": 1525841.29, "SumOfRemainingWork": 73842.39 }
]
}
Calcular propriedades calculadas
Transfira os resultados agregados para compute() para derivar novos valores usando expressões aritméticas (div, add, sub, mul). O exemplo seguinte calcula a percentagem de trabalho concluído:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)
Devoluções:
{
"value": [
{ "DonePercentage": 0.9676, "SumOfCompletedWork": 1514698.34, "SumOfRemainingWork": 50715.95 }
]
}
Construir uma consulta de diagrama de fluxo cumulativo
A consulta seguinte combina filter, groupby, e aggregate contra o WorkItemBoardSnapshot conjunto de entidades para produzir dados para um diagrama de fluxo cumulativo em Power BI ou Excel.
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
Esta consulta filtra para um intervalo de datas e um quadro e equipa específicos, agrupa por data e coluna do quadro, e devolve uma contagem por grupo. Devoluções:
{
"value": [
{ "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "Completed", "Count": 324 },
{ "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "In Progress", "Count": 5 }
]
}
Sugestão
Quanto menos linhas retornadas, mais rápido o Power BI ou o Excel atualizam. Utilize intervalos de datas reduzidos e filtros específicos por equipas e tabuleiros para minimizar o conjunto de resultados.
Use IA para agregar dados de acompanhamento de trabalho
Se configurar o Azure DevOps MCP Server, pode pedir ao seu assistente de IA que recupere dados de itens de trabalho em tempo real da sua organização Azure DevOps e ajudá-lo a elaborar ou resolver consultas de agregação Analytics OData $apply com base nesses dados.
| Tarefa | Exemplo de prompt |
|---|---|
| Contagem por estado | In <OrganizationName>, draft an Analytics OData $apply query that counts work items grouped by State in <ProjectName>. Use placeholders for <ODataVersion> and any filters I need. |
| Contagem por tipo e estado | Create an Analytics OData $apply query for <OrganizationName> that groups WorkItems by WorkItemType and State and returns a count for each group in <ProjectName>. |
| Filtrar e depois agregar | Write an Analytics OData query that filters WorkItems to bugs with Priority = 1 in <ProjectName>, then groups by Area/AreaPath and State and returns counts. |
| Valor restante e trabalho concluído | Generate an Analytics OData $apply query that filters to Iteration/IterationPath startswith '<IterationPath>' in <ProjectName>, then returns SumOfCompletedWork and SumOfRemainingWork. |
| Agregado entre equipas | Help me create an Analytics OData $apply query for WorkItemBoardSnapshot that filters to BoardName '<BoardName>' and Team/TeamName '<TeamName>' in <ProjectName>, then groups by DateValue and ColumnName and returns Count. |
| Explique cada cláusula | Explain what each part of this $apply query does and how to adjust it for a different iteration: <ODataQueryOrUrl>. |
| Erros de depuração $apply | This Analytics OData query returns a 400 error. Diagnose the $apply syntax and suggest a corrected query: <ODataQueryOrUrl>. |
| Validar resultados | Given this Analytics OData query for <OrganizationName>/<ProjectName>: <ODataQueryOrUrl>, tell me what columns and shape of JSON to expect back, and what common mistakes to check if results look wrong. |
Sugestão
Se estiver a usar Visual Studio Code, o modo agente é especialmente útil para iterar consultas de agregação — refinar filtros, resolver $apply problemas de sintaxe e validar resultados.