Freigeben über


Aggregieren von Arbeitsverfolgungsdaten mithilfe von Analytics

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

Sie können eine Summe Ihrer Arbeitsverfolgungsdaten auf eine von zwei Arten mithilfe von Analytics mit OData abrufen. Die erste Methode gibt eine einfache Anzahl von Arbeitsaufgaben basierend auf Ihrer OData-Abfrage zurück. Die zweite Methode gibt ein JSON-formatiertes Ergebnis basierend auf Ihrer OData-Abfrage zurück, die die OData-Aggregationserweiterung ausübt.

Dieser Artikel baut auf Informationen auf, die in " Erstellen von OData-Abfragen für Analytics " und "Definieren grundlegender Abfragen mit OData Analytics" bereitgestellt werden. Außerdem konzentrieren sich die Abfragen auf das Abrufen von Arbeitsaufgabendaten, die für das Abfragen anderer Entitätssätze gelten.

In diesem Artikel finden Sie Informationen zu Folgendem:

  • Informationen zur OData-Aggregationserweiterung
  • Verwenden der Aggregationserweiterung für OData
  • Gruppieren und Filtern aggregierter Ergebnisse
  • So aggregieren Sie Daten, um ein kumulatives Flussdiagramm zu generieren

Informationen zum Generieren einfacher Zählungen 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-Dienste unterstützt. Power BI-Integration und Zugriff auf den OData-Feed des Analytics-Diensts sind allgemein verfügbar. Wir empfehlen Ihnen, sie 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 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. Wir empfehlen Ihnen, sie zu verwenden und uns Feedback zu geben. Wenn Sie ein Upgrade von Azure DevOps Server 2019 durchgeführt haben, können Sie den Analysedienst 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 Analysedienst befindet sich in der Vorschau für Azure DevOps Server 2019. Sie können es für eine Projektsammlung aktivieren oder installieren. Die Power BI-Integration und der Zugriff auf den OData-Feed des Analytics-Diensts befinden sich in der Vorschau. Wir empfehlen Ihnen, sie 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 über Ihre Arbeitsverfolgungsdaten zu erstellen. Aggregationen in OData werden mithilfe einer Erweiterung erreicht, die das $apply Schlüsselwort einführt. Wir haben einige Beispiele für die Verwendung dieses Schlüsselworts unten. Erfahren Sie mehr über die Erweiterung bei der OData-Erweiterung für Die Datenaggregation.

Aggregieren von Daten mithilfe der OData-Aggregationserweiterung

Nachdem Sie nun erfahren haben, wie Sie einfache Zählungen ausführen können, sehen wir uns an, wie Aggregationen mithilfe des $apply Tokens ausgelöst werden, in dem das grundlegende Format 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 angewendeten Erweiterung

Mithilfe der $apply Erweiterung können Sie Zählungen, Summen und zusätzliche Informationen abrufen, wenn Sie Ihre Arbeitsverfolgungsdaten abfragen.

Gibt die Summe aller verbleibenden Arbeit zurück.

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

Zurückgeben des letzten Arbeitsaufgabenbezeichners

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 im Detail schnell aufzuschlüsseln.

Die folgende Klausel gibt beispielsweise eine Anzahl von Arbeitsaufgaben 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 Arbeitsaufgaben nach Typ zurückzugeben:

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

Es gibt ein Ergebnis zurück, das diesem Beispiel ähnelt:

{
  "@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 nach mehreren Eigenschaften gruppieren, wie in diesem Beispiel gezeigt:

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

Es gibt ein Ergebnis zurück, das diesem Beispiel ähnelt:

{
  "@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 über Entitäten hinweg gruppieren, die OData-Gruppierung unterscheidet sich jedoch von der Normalerweiseheit, wie Sie darüber nachdenken könnten.

Angenommen, Sie wollten wissen, wie viele Bereiche in jedem Projekt in einer Organisation oder Sammlung enthalten sind. In OData entspricht "Alle Bereiche zählen und nach Projekt gruppieren" dem "Geben Sie mir alle Projekte und eine Anzahl von Bereichen für jedes Projekt". Dies führt zu einer Abfrage ähnlich wie:

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 diskretste Filterung zu erledigen.

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 separat 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 und die 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 ein kumulatives Flussdiagramm in Power BI erstellen. Sie können eine Abfrage wie die folgende 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 gibt ein Ergebnis zurück, das diesem Beispiel ähnelt. Sie können sie dann direkt in Ihrer 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 tut:

  • Filtert die Daten nach einem bestimmten Team.
  • Filtert die Daten in einen bestimmten Backlog
  • Gibt die Anzahl der Arbeitsaufgaben zurück.

Wenn Sie Power BI oder Excel aktualisieren, desto weniger Zeilen erforderlich sind, desto schneller erfolgt die Aktualisierung.

Nächste Schritte