Freigeben über


Aggregieren von Arbeitsverfolgungsdaten mithilfe von Analytics

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

Sie können Arbeitsverfolgungsdaten mithilfe von Analytics mit OData auf zwei Arten aggregieren: verwenden Sie $count einfache Summen, oder verwenden Sie die OData-Aggregationserweiterung $apply , um gruppierte, gefilterte und berechnete Ergebnisse als JSON zurückzugeben.

Tipp

Sie können KI verwenden, um Ihnen bei dieser Aufgabe zu helfen später in diesem Artikel oder sehen Sie sich an, wie Sie die KI-Unterstützung bei Azure DevOps MCP Server aktivieren, um loszulegen.

Dieser Artikel basiert auf dem Erstellen von OData-Abfragen für Analytics und Definieren grundlegender Abfragen mithilfe von OData Analytics. Die Beispiele konzentrieren sich auf Arbeitsaufgabendaten, aber die gleichen Prinzipien gelten für andere Entitätssätze. Informationen zu einfachen Zählungsabfragen finden Sie unter "Zurückgeben einer Anzahl von Elementen".

Hinweis

Der Analysedienst wird automatisch aktiviert und in der Produktion für alle Dienste in Azure DevOps Services unterstützt. Power BI-Integration und Zugriff auf den OData-Feed des Analytics-Diensts sind allgemein verfügbar. Es wird Ihnen empfohlen, den Analytics-OData-Feed zu verwenden und Feedback zu geben.

Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version der OData-API ist v2.0, und die neueste Vorschauversion ist v4.0-preview. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.

Hinweis

Der Analysedienst wird automatisch installiert und in der Produktion für alle neuen Projektsammlungen für Azure DevOps Server 2020 und höhere Versionen unterstützt. Power BI-Integration und Zugriff auf den OData-Feed des Analytics-Diensts sind allgemein verfügbar. Es wird Ihnen empfohlen, den Analytics-OData-Feed zu verwenden und Feedback zu geben. Wenn Sie ein Upgrade von Azure DevOps Server 2019 durchführen, können Sie den Analysedienst während des Upgrades installieren.

Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version der OData-API ist v2.0, und die neueste Vorschauversion ist v4.0-preview. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.

Voraussetzungen

Kategorie Anforderungen
Zugriffsebenen - Projektmitglied.
– Mindestens Basis--Zugriff.
Berechtigungen Standardmäßig verfügen Projektmitglieder über die Berechtigung zum Abfragen von Analysen und Erstellen von Ansichten. Weitere Informationen zu anderen Voraussetzungen für die Dienst- und Featureaktivierung und allgemeine Datenverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics.

Informationen zur $apply Aggregationserweiterung

OData stellt eine Aggregationserweiterung bereit, die das $apply Schlüsselwort zum Gruppieren, Filtern und Berechnen von Aggregatwerten über Ihre Arbeitsverfolgungsdaten einführt. In den folgenden Abschnitten wird die Verwendung von $apply mit aggregate, groupby, filter, und compute gezeigt. Die vollständige Spezifikation finden Sie unter der OData-Erweiterung für Datenaggregation.

Aggregieren von Daten mithilfe von $apply

Fügen Sie das $apply Token an ihre Abfrage-URL an, um Aggregationen auszulösen. Die grundlegende Syntax lautet:

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

Parameter Beschreibung
{entitySetName} Die Entität, die abgefragt werden soll, wie z. B. WorkItems.
{columnToAggregate} Das zu aggregierende Feld wie RemainingWork.
{aggregationType} Die Aggregationsfunktion: sum, min, , max, , averageoder countdistinct.
{newColumnName} Der Alias für die aggregierte Ergebnisspalte.

Die folgenden Beispiele zeigen allgemeine aggregate Vorgänge.

Gibt die Summe aller verbleibenden Arbeit zurück.

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

Geben Sie die ID des letzten Arbeitselements zurück

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

Gruppieren von Ergebnissen mithilfe von "groupby"

Die groupby Klausel funktioniert wie SQL GROUP BY – sie bricht aggregierte Ergebnisse nach einer oder mehreren Eigenschaften auf.

Zählen von Arbeitsaufgaben nach Typ

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

Gibt ein Ergebnis wie folgt zurück:

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

Gruppieren nach mehreren Eigenschaften

Fügen Sie weitere Eigenschaften innerhalb der groupby Klammern hinzu, um feiner körnige Aufschlüsselungen zu erstellen:

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

Gibt eine Zeile für jede eindeutige Kombination aus Typ und Zustand zurück (z. B. Bug/Active, Bug/Commit, Product Backlog Item/Active).

Gruppieren über Entitäten hinweg

Sie können mithilfe von Navigationseigenschaften über verwandte Entitäten hinweg gruppieren. Um beispielsweise Bereiche pro Projekt zu zählen:

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

Filtern aggregierter Ergebnisse

Verwenden Sie filter() innen $apply , um Daten vor oder nach der Aggregation einzugrenzen. Verketten Sie mehrere Filter mithilfe von / (Pipe) und platzieren Sie den selektivsten Filter zuerst, um die beste Leistung zu erzielen.

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

Hinweis

Die groupby Klausel ist optional. Verwenden Sie aggregate allein, um einen einzelnen Wert zurückzugeben.

Aggregieren mehrerer Felder in einem einzelnen Aufruf

Listen Sie mehrere Felder innerhalb einer einzelnen aggregate-Klausel auf, getrennt durch Kommas, um zusätzliche Rundreisen zu vermeiden.

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

Rückgabewerte:

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

Berechnen berechneter Eigenschaften

Die aggregierten Ergebnisse werden in compute() geleitet, um mit arithmetischen Ausdrücken (div, add, sub, mul) neue Werte abzuleiten. Im folgenden Beispiel wird der Prozentsatz der abgeschlossenen Arbeit berechnet:

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

Rückgabewerte:

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

Erstellen einer kumulativen Flussdiagrammabfrage

Die folgende Abfrage kombiniert filter, groupby und aggregate mit dem WorkItemBoardSnapshot-Entitätssatz, um Daten für ein kumulatives Flussdiagramm in Power BI oder Excel zu erzeugen.

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

Diese Abfrage filtert nach einem Datumsbereich und einem bestimmten Board und Team, Gruppen nach Datums- und Boardspalte und gibt eine Anzahl pro Gruppe zurück. Rückgabewerte:

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

Tipp

Je weniger Zeilen zurückgegeben werden, desto schneller wird Power BI oder Excel aktualisiert. Verwenden Sie enge Datumsbereiche und bestimmte Board- und Teamfilter, um das Resultset zu minimieren.

Verwenden von KI zum Erstellen von Aggregationsabfragen

Wenn Sie den Azure DevOps MCP-Server konfigurieren, können Sie KI-Assistenten verwenden, um OData-Aggregationsabfragen zu erstellen und zu beheben.

Beispiel-Prompts

Aufgabe Beispielaufforderung
Anzahl nach Status Write an OData aggregation query that counts work items grouped by state in <Contoso> project
Summe der Story-Punkte Create an OData query using $apply to sum story points by iteration path for user stories in <Contoso> project
Erstellen einer CFD-Abfrage Generate an OData aggregation query for a cumulative flow diagram that groups work items by board column and date in <Contoso> project
Filtern und dann aggregieren Write an OData query that filters to bugs with priority 1 and then counts them grouped by area path in <Contoso> project
Mehrere Aggregationen Create an OData query that returns both the count and average story points per sprint for <Contoso> project
Debugging der $apply-Syntax My OData aggregation query returns a 400 error - help me fix the $apply clause for grouping work items by state and type in <Contoso> project

Nächster Schritt