Aggregare i dati di rilevamento del lavoro con Analytics

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

È possibile ottenere una somma dei dati di rilevamento del lavoro in uno dei due modi usando Analytics con OData. Il primo metodo restituisce un semplice conteggio degli elementi di lavoro in base alla query OData. Il secondo metodo restituisce un risultato in formato JSON basato sulla query OData che esegue l'estensione di aggregazione OData.

Questo articolo si basa sulle informazioni fornite in Costruire query OData per Analisi e Definire query di base usando OData Analytics. Inoltre, le query sono incentrate sul recupero dei dati degli elementi di lavoro, ma i principi si applicano per l'esecuzione di query su altri set di entità.

Contenuto dell'articolo:

  • Informazioni sull'estensione di aggregazione OData
  • Come usare l'estensione di aggregazione per OData
  • Come raggruppare e filtrare i risultati aggregati
  • Come aggregare i dati per generare un diagramma di flusso cumulativo

Per informazioni su come generare conteggi semplici, vedere Restituire un conteggio di elementi (nessun altro dato) e Restituire un conteggio di elementi e dati.

Nota

Il servizio Analytics viene abilitato automaticamente e supportato nell'ambiente di produzione per tutti i Azure DevOps Services. L'integrazione di Power BI e l'accesso al feed OData del servizio Analisi sono disponibili a livello generale. Ti invitiamo a usarlo e a inviare commenti e suggerimenti. I dati disponibili dipendono dalla versione. La versione supportata più recente è v2.0e la versione di anteprima più recente è v4.0-preview. Per altre informazioni, vedere Controllo delle versioni delle 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 Analisi sono disponibili a livello generale. Ti invitiamo a usarlo e a inviare commenti e suggerimenti. Se è stato eseguito l'aggiornamento da Azure DevOps Server 2019, è possibile installare il servizio Analytics durante l'aggiornamento.

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

Nota

Il servizio Analytics è disponibile in anteprima per Azure DevOps Server 2019. È possibile abilitarlo o installarlo per una raccolta di progetti. L'integrazione di Power BI e l'accesso al feed OData del servizio Analisi sono disponibili in anteprima. Ti invitiamo a usarlo e a inviare commenti e suggerimenti.

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

Che cos'è l'estensione di aggregazione per OData?

Analytics si basa su OData per creare query sui dati di rilevamento del lavoro. Le aggregazioni in OData vengono ottenute usando un'estensione che introduce la $apply parola chiave . Di seguito sono riportati alcuni esempi di come usare questa parola chiave. Altre informazioni sull'estensione sono disponibili in Estensione OData per l'aggregazione dei dati.

Aggregare i dati usando l'estensione di aggregazione OData

Ora che si è visto come eseguire conteggi semplici, è possibile esaminare come attivare le aggregazioni usando il $apply token in cui il formato di base alla fine dell'URL è il seguente:

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

Dove:

  • {entitySetName} è l'entità che deve essere eseguita una query per
  • {columnToAggregate} è la colonna di aggregazione
  • {aggregationType} specifica il tipo di aggregazione usato
  • {newColumnName} specifica il nome della colonna con valori dopo l'aggregazione.

Dati aggregati con l'estensione apply

Usando l'estensione $apply , è possibile ottenere conteggi, somme e informazioni aggiuntive quando si eseguono query sui dati di rilevamento del lavoro.

Restituisce la somma di tutto il lavoro rimanente

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

Restituisce 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 la clausola groupby

L'estensione di aggregazione OData supporta anche una groupby clausola identica alla clausola SQL GROUP BY . È possibile usare questa clausola per suddividere rapidamente i numeri in modo più dettagliato.

Ad esempio, la clausola seguente restituisce un conteggio degli elementi di lavoro:

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

Aggiungere la groupby clausola per restituire un conteggio degli 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 a questo esempio:

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

È anche possibile raggruppare in base a più proprietà, come in questo esempio:

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

Restituisce un risultato simile a questo esempio:

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

È anche possibile raggruppare tra entità, tuttavia il raggruppamento OData è diverso da quello che si potrebbe pensare normalmente.

Si supponga, ad esempio, di voler conoscere il numero di aree in ogni progetto di un'organizzazione o di una raccolta. In OData "contare tutte le aree e raggrupparle per progetto" equivale a "assegnarmi tutti i progetti e un numero di aree per ogni progetto". Ciò comporta una query simile alla seguente:

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

Filtro dei risultati aggregati

È anche possibile filtrare i risultati aggregati, ma vengono applicati in modo leggermente diverso rispetto a quando non si usa l'aggregazione. Analytics valuta i filtri lungo una pipe, quindi è sempre consigliabile eseguire prima il filtro più discreto.

I filtri sono simili a questo esempio:

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

Non è necessario specificare la groupby clausola . È possibile usare semplicemente la aggregate clausola per restituire un singolo valore.

Generare più aggregazioni all'interno di una singola chiamata

È possibile fornire più informazioni. Un esempio è la somma del lavoro completato e separatamente la somma del lavoro rimanente. In tal caso, è possibile effettuare chiamate separate o una singola chiamata come indicato di seguito:

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

Verrà restituito un risultato simile all'esempio seguente:

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

Generare proprietà calcolate da usare all'interno di una singola chiamata

Potrebbe essere necessario usare un'espressione matematica per calcolare le proprietà da utilizzare in un set di risultati. Un esempio è la somma del lavoro completato diviso per la somma del lavoro completato più la somma del lavoro rimanente per calcolare la percentuale di lavoro completato. In questo caso, è possibile usare questo esempio:

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

Generare un diagramma di flusso cumulativo dai dati aggregati

Si supponga di voler creare un diagramma di flusso cumulativo in Power BI. È possibile usare una query simile alla seguente:

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

Restituisce un risultato simile a questo esempio. È quindi possibile usarlo direttamente all'interno della visualizzazione dei dati preferita.

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

Di seguito viene esaminato il funzionamento effettivo della query:

  • Filtra i dati in un team specifico
  • Filtra i dati in un backlog specifico
  • Restituisce un conteggio degli elementi di lavoro.

Durante l'aggiornamento di Power BI o Excel, il minor numero di righe necessarie viene eseguito più velocemente.

Passaggi successivi