Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Abrufen 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 Aggregieren von Arbeitsverfolgungsdaten
Wenn Sie den Azure DevOps MCP-Server konfigurieren, können Sie Ihren KI-Assistenten bitten, Echtzeit-Arbeitsaufgabendaten aus Ihrer Azure DevOps-Organisation abzurufen und Ihnen bei der Erstellung oder Problembehandlung von Analyse-OData-Aggregationsabfragen $apply basierend auf diesen Daten zu helfen.
| Aufgabe | Beispielaufforderung |
|---|---|
| Anzahl nach Status | 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. |
| Anzahl nach Typ und Zustand | Create an Analytics OData $apply query for <OrganizationName> that groups WorkItems by WorkItemType and State and returns a count for each group in <ProjectName>. |
| Filtern und dann aggregieren | 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. |
| Summe der verbleibenden und abgeschlossenen Arbeit | Generate an Analytics OData $apply query that filters to Iteration/IterationPath startswith '<IterationPath>' in <ProjectName>, then returns SumOfCompletedWork and SumOfRemainingWork. |
| Aggregieren über Teams hinweg | 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. |
| Erläutern der einzelnen Klauseln | Explain what each part of this $apply query does and how to adjust it for a different iteration: <ODataQueryOrUrl>. |
| Debuggen von $apply Fehlern | This Analytics OData query returns a 400 error. Diagnose the $apply syntax and suggest a corrected query: <ODataQueryOrUrl>. |
| Überprüfen der Ergebnisse | 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. |
Tipp
Wenn Sie Visual Studio Code verwenden, ist der Agentmodus besonders hilfreich beim Durchlaufen von Aggregationsabfragen – das Verfeinern von Filtern, das Beheben von Syntaxproblemen und das Überprüfen von Ergebnissen.