Condividi tramite


Aggregare i dati di rilevamento del lavoro tramite Analytics

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

È possibile aggregare i dati di rilevamento del lavoro usando Analytics con OData in due modi: usare $count per i totali semplici o usare l'estensione di aggregazione OData $apply per restituire risultati raggruppati, filtrati e calcolati come JSON.

Suggerimento

È possibile usare l'intelligenza artificiale per facilitare questa attività più avanti in questo articolo, oppure vedere Abilitare l'assistenza AI con Azure DevOps MCP Server per iniziare.

Questo articolo si basa su Costruire query OData per Analisi e Definire query di base usando OData Analytics. Gli esempi si concentrano sui dati degli elementi di lavoro, ma gli stessi principi si applicano ad altri set di entità. Per le query di conteggio semplici, vedere Ottenere un conteggio degli elementi.

Nota

Il servizio Analytics viene abilitato e supportato automaticamente nell'ambiente di produzione per tutti i servizi in Azure DevOps Services. L'integrazione di Power BI e l'accesso al feed OData del servizio Analytics sono disponibili a livello generale. Si consiglia di usare il feed OData di Analytics e fornire commenti e suggerimenti.

I dati disponibili dipendono dalla versione. La versione più recente supportata dell'API OData è v2.0e la versione di anteprima più recente è v4.0-preview. Per altre informazioni, vedere Controllo delle versioni dell'API OData.

Nota

Il servizio Analytics viene installato e supportato automaticamente nell'ambiente di produzione per tutte le nuove raccolte di progetti per Azure DevOps Server 2020 e versioni successive. L'integrazione di Power BI e l'accesso al feed OData del servizio Analytics sono disponibili a livello generale. Si consiglia di usare il feed OData di Analytics e fornire commenti e suggerimenti. Se si esegue l'aggiornamento da Azure DevOps Server 2019, è possibile installare il servizio Analytics durante l'aggiornamento.

I dati disponibili dipendono dalla versione. La versione più recente supportata dell'API OData è v2.0e la versione di anteprima più recente è v4.0-preview. Per altre informazioni, vedere Controllo delle versioni dell'API OData.

Prerequisiti

Categoria Requisiti
livelli di accesso - membro del progetto.
- Almeno accesso Base.
autorizzazioni Per impostazione predefinita, i membri del progetto dispongono dell'autorizzazione per eseguire query su Analisi e creare viste. Per altre informazioni sugli altri prerequisiti relativi all'abilitazione di servizi e funzionalità e alle attività generali di rilevamento dei dati, vedere Autorizzazioni e prerequisiti per accedere ad Analisi.

Informazioni sull'estensione di aggregazione $apply

OData fornisce un'estensione di aggregazione che introduce la $apply parola chiave per il raggruppamento, il filtro e l'elaborazione di valori aggregati sui dati di rilevamento del lavoro. Le sezioni seguenti illustrano come usare $apply con aggregate, groupby, filtere compute. Per la specifica completa, vedere Estensione OData per l'aggregazione dei dati.

Aggregare i dati usando $apply

Aggiungere il token $apply all'URL della query per attivare le aggregazioni. La sintassi di base è:

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

Parametro Descrizione
{entitySetName} Set di entità su cui eseguire una query, ad esempio WorkItems.
{columnToAggregate} Campo da aggregare, ad esempio RemainingWork.
{aggregationType} Funzione di aggregazione: sum, min, maxaverage, o countdistinct.
{newColumnName} Alias per la colonna del risultato aggregato.

Negli esempi seguenti vengono illustrate le operazioni comuni aggregate .

Restituisci la somma di tutto il lavoro rimanente

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

Restituire l'ultimo identificatore dell'elemento di lavoro

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

Raggruppare i risultati usando groupby

La groupby clausola funziona come SQL GROUP BY . Suddivide i risultati aggregati in base a una o più proprietà.

Contare gli elementi di lavoro per tipo

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

Restituisce un risultato simile al seguente:

{
  "value": [
    { "WorkItemType": "Bug", "Count": 3 },
    { "WorkItemType": "Product Backlog Item", "Count": 13 }
  ]
}

Raggruppare per più proprietà

Aggiungere altre proprietà tra groupby parentesi per creare suddivisioni più dettagliate:

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

Restituisce una riga per ogni combinazione univoca di tipo e stato ,ad esempio Bug/Active, Bug/Committed, Product Backlog Item/Active.

Raggruppare le entità

È possibile raggruppare le entità correlate usando le proprietà di navigazione. Ad esempio, per contare le aree per progetto:

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

Filtro dei risultati aggregati

Usare filter() all'interno $apply per restringere i dati prima o dopo l'aggregazione. Concatenare più filtri usando / (pipe) e posizionare il filtro più selettivo per ottenere prestazioni ottimali.

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

La groupby clausola è facoltativa. Usare aggregate da solo per restituire un singolo valore.

Aggregare più campi in una singola chiamata

Elencare più campi all'interno di una singola aggregate clausola, separati da virgole, per evitare round trip aggiuntivi.

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

Restituisce:

{
  "value": [
    { "SumOfCompletedWork": 1525841.29, "SumOfRemainingWork": 73842.39 }
  ]
}

Calcolare le proprietà calcolate

Inviare tramite pipe i risultati aggregati in compute() per derivare nuovi valori usando espressioni aritmetiche (div, add, sub, mul). Nell'esempio seguente viene calcolata la percentuale di lavoro completata:

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

Restituisce:

{
  "value": [
    { "DonePercentage": 0.9676, "SumOfCompletedWork": 1514698.34, "SumOfRemainingWork": 50715.95 }
  ]
}

Costruire una query per un diagramma di flusso cumulativo

La query seguente combina filter, groupby, e aggregate sull'insieme di entità WorkItemBoardSnapshot per produrre dati per un diagramma di flusso cumulativo in Power BI o 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

Questa query filtra in base a un intervallo di date e a un gruppo specifico, raggruppa per colonna data e scheda e restituisce un conteggio per gruppo. Restituisce:

{
  "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 }
  ]
}

Suggerimento

Minore è il numero di righe restituite, più veloce viene aggiornato Power BI o Excel. Per ridurre al minimo il set di risultati, usare intervalli di date stretti e filtri specifici per schede e team.

Usare l'intelligenza artificiale per aggregare i dati di rilevamento del lavoro

Se si configura il server MCP di Azure DevOps, è possibile chiedere all'assistente per intelligenza artificiale di recuperare i dati degli elementi di lavoro in tempo reale dall'organizzazione di Azure DevOps e semplificare la bozza o la risoluzione dei problemi relativi alle query di aggregazione OData $apply di Analisi basate su tali dati.

Attività Richiesta di esempio
Conteggio per stato 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.
Conteggio per tipo e stato Create an Analytics OData $apply query for <OrganizationName> that groups WorkItems by WorkItemType and State and returns a count for each group in <ProjectName>.
Filtrare quindi aggregare 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.
Somma del lavoro rimanente e completato Generate an Analytics OData $apply query that filters to Iteration/IterationPath startswith '<IterationPath>' in <ProjectName>, then returns SumOfCompletedWork and SumOfRemainingWork.
Aggregare tra i team 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.
Spiegare ogni clausola Explain what each part of this $apply query does and how to adjust it for a different iteration: <ODataQueryOrUrl>.
Debug degli errori di $apply This Analytics OData query returns a 400 error. Diagnose the $apply syntax and suggest a corrected query: <ODataQueryOrUrl>.
Convalidare i risultati 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.

Suggerimento

Se si usa Visual Studio Code, la modalità agente è particolarmente utile per l'iterazione delle query di aggregazione, affinando filtri, sintassi per la risoluzione dei problemi $apply e convalidando i risultati.

Passo successivo