Aggregieren von Arbeitsnachverfolgungsdaten mithilfe von Analytics
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Mithilfe von Analytics mit OData können Sie eine Summe Ihrer Arbeitsverfolgungsdaten auf eine von zwei Arten abrufen. Die erste Methode gibt basierend auf Ihrer OData-Abfrage eine einfache Anzahl von Arbeitselementen zurück. Die zweite Methode gibt basierend auf Ihrer OData-Abfrage, die die OData-Aggregationserweiterung trainiert, ein JSON-formatiertes Ergebnis zurück.
In diesem Artikel werden Informationen unter Erstellen von OData-Abfragen für Analytics und Definieren grundlegender Abfragen mithilfe von OData Analytics erstellt. Außerdem konzentrieren sich die Abfragen in diesem Artikel auf das Abrufen von Arbeitselementdaten, die Prinzipien gelten jedoch für das Abfragen anderer Entitätssätze.
In diesem Artikel finden Sie Informationen zu Folgendem:
- Informationen zur OData-Aggregationserweiterung
- Verwenden der Aggregationserweiterung für OData
- Gruppieren und Filtern aggregierter Ergebnisse
- Aggregieren von Daten zum Generieren eines Kumulativen Flussdiagramms
Informationen zum Generieren einfacher Anzahlen finden Sie unter Zurückgeben einer Anzahl von Elementen (keine anderen Daten) und Zurückgeben einer Anzahl von Elementen und Daten.
Hinweis
Der Analysedienst wird automatisch aktiviert und in der Produktion für alle Azure DevOps Services unterstützt.
Die Power BI-Integration und der Zugriff auf den OData-Feed des Analysediensts sind allgemein verfügbar. Wir empfehlen Ihnen, es zu verwenden und uns Feedback zu geben.
Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version ist v2.0
, und die neueste Vorschauversion ist v4.0-preview
. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.
Hinweis
Der Analytics-Dienst wird automatisch installiert und in der Produktion für alle neuen Projektsammlungen für Azure DevOps Server 2020 und höhere Versionen unterstützt. Die Power BI-Integration und der Zugriff auf den OData-Feed des Analysediensts sind allgemein verfügbar. Wir empfehlen Ihnen, es zu verwenden und uns Feedback zu geben. Wenn Sie ein Upgrade von Azure DevOps Server 2019 durchgeführt haben, können Sie den Analytics-Dienst während des Upgrades installieren.
Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version ist v2.0
, und die neueste Vorschauversion ist v4.0-preview
. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.
Hinweis
Der Analytics-Dienst befindet sich für Azure DevOps Server 2019 in der Vorschauphase. Sie können es für eine Projektsammlung aktivieren oder installieren . Die Power BI-Integration und der Zugriff auf den OData-Feed des Analysediensts befinden sich in der Vorschau. Wir empfehlen Ihnen, es zu verwenden und uns Feedback zu geben.
Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version ist v2.0
, und die neueste Vorschauversion ist v4.0-preview
. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.
Was ist die Aggregationserweiterung für OData?
Analytics basiert auf OData, um Abfragen für Ihre Arbeitsnachverfolgungsdaten zu erstellen. Aggregationen in OData werden mithilfe einer Erweiterung erreicht, die die $apply
Schlüsselwort (keyword) einführt. Nachfolgend finden Sie einige Beispiele für die Verwendung dieses Schlüsselwort (keyword). Weitere Informationen zur Erweiterung finden Sie unter OData-Erweiterung für Datenaggregation.
Aggregieren von Daten mithilfe der OData-Aggregationserweiterung
Nachdem Sie nun erfahren haben, wie einfache Anzahlen ausgeführt werden, sehen wir uns an, wie Aggregationen mithilfe des $apply
Tokens ausgelöst werden, wobei das Basisformat am Ende der URL wie folgt lautet:
/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})
Hierbei gilt:
- {entitySetName} ist die Entität, die abgefragt werden muss.
- {columnToAggregate} ist die Aggregationsspalte.
- {aggregationType} gibt den typ der verwendeten Aggregation an.
- {newColumnName} gibt den Namen der Spalte mit Werten nach der Aggregation an.
Aggregierte Daten mithilfe der Apply-Erweiterung
Mit der $apply
Erweiterung können Sie Zählungen, Summen und zusätzliche Informationen abrufen, wenn Sie Ihre Arbeitsnachverfolgungsdaten abfragen.
Zurückgeben der Summe aller verbleibenden Arbeit
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(RemainingWork with sum as SumOfRemainingWork)
Zurückgeben des letzten Arbeitselementbezeichners
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(WorkItemId with max as MaxWorkItemId)
Gruppieren von Ergebnissen mithilfe der groupby-Klausel
Die OData-Aggregationserweiterung unterstützt auch eine groupby
-Klausel, die mit der SQL-Klausel GROUP BY
identisch ist. Sie können diese Klausel verwenden, um Zahlen schnell ausführlicher aufzuschlüsseln.
Die folgende Klausel gibt beispielsweise eine Anzahl von Arbeitselementen zurück:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate($count as Count)
Fügen Sie die groupby
-Klausel hinzu, um eine Anzahl von Arbeitselementen nach Typ zurückzugeben:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType), aggregate($count as Count))
Es wird ein Ergebnis ähnlich wie in diesem Beispiel zurückgegeben:
{
"@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
}
]
}
Sie können auch wie in diesem Beispiel nach mehreren Eigenschaften gruppiert werden:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType, State), aggregate($count as Count))
Es wird ein Ergebnis ähnlich wie in diesem Beispiel zurückgegeben:
{
"@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
}
]
}
Sie können auch entitätsübergreifend gruppieren, aber die OData-Gruppierung unterscheidet sich von der, wie Sie es normalerweise denken.
Angenommen, Sie möchten wissen, wie viele Bereiche sich in jedem Projekt in einem organization oder einer Sammlung befinden. In OData ist "Alle Bereiche zählen und nach Projekt gruppieren" gleichbedeutend mit "Geben Sie mir alle Projekte und eine Anzahl von Bereichen für jedes Projekt". Dies führt zu einer Abfrage ähnlich der folgenden:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
$apply=groupby((Project/ProjectName), aggregate($count as Count))
Filtern aggregierter Ergebnisse
Sie können auch aggregierte Ergebnisse filtern, sie werden jedoch etwas anders angewendet, als wenn Sie keine Aggregation verwenden. Analytics wertet Filter entlang einer Pipe aus, sodass es immer am besten ist, zuerst die diskreteste Filterung durchzuführen.
Filter sehen wie in diesem Beispiel aus:
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
Sie müssen die groupby
-Klausel nicht angeben. Sie können einfach die aggregate
-Klausel verwenden, um einen einzelnen Wert zurückzugeben.
Generieren mehrerer Aggregationen innerhalb eines einzelnen Aufrufs
Möglicherweise möchten Sie mehrere Informationen bereitstellen. Ein Beispiel ist die Summe der abgeschlossenen Arbeit und getrennt die Summe der verbleibenden Arbeit. In einem solchen Fall können Sie separate Anrufe oder einen einzelnen Anruf wie folgt tätigen:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)
Es wird ein Ergebnis zurückgegeben, das wie in diesem Beispiel aussieht:
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
{
"@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
}
]
}
Generieren berechneter Eigenschaften für die Verwendung innerhalb eines einzelnen Aufrufs
Möglicherweise müssen Sie einen mathematischen Ausdruck verwenden, um Eigenschaften für die Verwendung in einem Resultset zu berechnen. Ein Beispiel ist die Summe der abgeschlossenen Arbeit, die durch die Summe der abgeschlossenen Arbeit plus der Summe der verbleibenden Arbeit geteilt wird, um den Prozentsatz der abgeschlossenen Arbeit zu berechnen. In einem solchen Fall können Sie dieses Beispiel verwenden:
/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
}
]
}
Generieren eines kumulativen Flussdiagramms aus aggregierten Daten
Angenommen, Sie möchten in Power BI ein Kumulatives Flussdiagramm erstellen. Sie können eine Abfrage ähnlich der folgenden verwenden:
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
Es wird ein Ergebnis ähnlich wie in diesem Beispiel zurückgegeben. Sie können es dann direkt in Der Datenvisualisierung Ihrer Wahl verwenden.
{
"@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"
}
]
}
Sehen wir uns an, was diese Abfrage tatsächlich bewirkt:
- Filtert die Daten für ein bestimmtes Team.
- Filtert die Daten in ein bestimmtes Backlog.
- Gibt die Anzahl der Arbeitselemente zurück.
Je weniger Zeilen erforderlich sind, desto schneller erfolgt die Aktualisierung beim Aktualisieren von Power BI oder Excel.