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.

Nächste Schritte