Aggregieren von Arbeitsnachverfolgungsdaten mithilfe von Analytics

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019

Sie können eine Summe Ihrer Arbeitsnachverfolgungsdaten mithilfe von Analytics mit OData auf zwei Arten abrufen. Die erste Methode gibt eine einfache Anzahl von Arbeitselementen 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.

In diesem Artikel finden Sie Informationen zu Folgendem:

  • Informationen zur OData-Aggregationserweiterung
  • Generieren einer einfachen Anzahl von Arbeitselementen
  • Verwenden der Aggregationserweiterung für OData
  • Gruppieren und Filtern aggregierter Ergebnisse
  • Aggregieren von Daten zum Generieren eines kumulativen Flow Diagramms

Hinweis

Der Analytics-Dienst wird automatisch für alle Azure DevOps Services aktiviert. Es wird für die Verwendung in der Produktion unterstützt. Power BI Integration und Zugriff auf den OData-Feed des Analytics-Diensts befinden sich in der Vorschau. Wir empfehlen Ihnen, sie zu verwenden und uns Feedback zu geben. .

Hinweis

Der Analytics-Dienst wird für Azure DevOps Server 2020 automatisch auf allen neuen Projektsammlungen installiert. Es wird für die Verwendung in der Produktion unterstützt. Power BI Integration und Zugriff auf den OData-Feed des Analytics-Diensts befinden sich in der Vorschau. Wir empfehlen Ihnen, sie zu verwenden und uns Feedback zu geben. Wenn Sie ein Upgrade von Azure DevOps Server 2019 durchgeführt haben, erhalten Sie die Möglichkeit, den Analytics-Dienst während des Upgrades zu installieren.

Hinweis

Der Analytics-Dienst befindet sich in der Vorschau für Azure DevOps Server 2019. Sie greifen auf Analytics zu, indem Sie sie für eine Projektsammlung aktivieren oder installieren. Power BI Integration und Zugriff auf den OData-Feed des Analytics-Diensts befinden sich in der Vorschau. Wir empfehlen Ihnen, sie zu verwenden und uns Feedback zu geben.

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 das $apply Schlüsselwort einführt. Nachfolgend finden Sie einige Beispiele für die Verwendung dieses Schlüsselworts. Weitere Informationen zur Erweiterung finden Sie unter OData-Erweiterung für Datenaggregation.

Grundlegende Stamm-URL

Verwenden Sie diese grundlegende Stamm-URL als Präfix für alle In diesem Artikel bereitgestellten Beispiele.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/
https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

Hinweis

Die in diesem Artikel gezeigten Beispiele basieren auf einer Azure DevOps Services-URL, die Sie in Ihrer Azure DevOps Server-URL ersetzen müssen.

Einfache Aggregationen von Zählern

Zunächst sehen wir uns an, wie Zählungen ohne die Aggregationserweiterungen durchzuführen sind.

Die einfache Zählung erfolgt durch Hinzufügen der $count Abfrageoption am Ende der URL. Um beispielsweise herauszufinden, wie viele Arbeitselemente in Ihrer Organisation definiert sind, fügen Sie ihrer Abfrage diese Zeichenfolge hinzu:

/WorkItems/$count

Dabei lautet die vollständige OData-Abfrage:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems/$count

Hinweis

Der {version} Wert wird als formatiert. v1.0 Die neueste unterstützte Version ist v2.0 , und die neueste Vorschauversion ist v4.0-preview . Weitere Informationen finden Sie unter Versionierung der OData-API.

Zum Vergleich fügen Sie ihrer Abfrage mithilfe der OData-Aggregationserweiterung diese Zeichenfolge hinzu:

/WorkItems?$apply=aggregate($count as Count)

Dabei lautet die vollständige OData-Abfrage:

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

Bei einfachen Zählungen weist der Nichtaggregationsansatz eine einfachere Syntax auf.

Hinweis

Using $count gibt eine einzelne Zahl zurück. Die Verwendung der OData-Aggregationserweiterung gibt einen formatierten JSON-Code zurück.

Sie können auch filtern, was Sie zählen möchten. Wenn Sie beispielsweise wissen möchten, wie viele Arbeitselemente sich im Status "In Bearbeitung" befinden, geben Sie die folgende Zeichenfolge in Ihrer Abfrage an:

/WorkItems/$count?$filter=State eq 'In Progress'

Dabei lautet die vollständige OData-Abfrage:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems/$count?
  $filter=State eq 'In Progress'

Zum Vergleich fügen Sie der Abfrage mithilfe von Datenaggregationen den folgenden Codeausschnitt hinzu:

/WorkItems?$apply=filter(State eq 'In Progress')/aggregate($count as Count)

Dabei lautet die vollständige OData-Abfrage:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=
   filter(State eq 'In Progress')/
   aggregate($count as Count)

Aggregieren von Daten mithilfe der OData-Aggregationserweiterung

Nachdem Sie nun gesehen haben, wie Sie einfache Zählungen durchführen, sehen wir uns an, wie Aggregationen mithilfe des Tokens ausgelöst werden, $apply wobei 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, für 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

Mithilfe 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 GROUP BY SQL-Klausel identisch ist. Sie können diese Klausel verwenden, um Zahlen schnell ausführlicher aufzubrechen.

Diese Klausel gibt beispielsweise die Anzahl der Arbeitselemente 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 dem folgenden 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 nach mehreren Eigenschaften gruppieren, wie in diesem Beispiel:

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

Es wird ein Ergebnis ähnlich dem folgenden 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äten übergreifend gruppieren, aber die OData-Gruppierung unterscheidet sich von der Vorgehensweise, die Sie normalerweise denken.

Filtern aggregierter Ergebnisse

Sie können auch aggregierte Ergebnisse filtern, aber sie werden 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 durchzuführen.

Filter sehen wie im folgenden 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 -Klausel nicht groupby 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 Aufrufe oder einen einzelnen Aufruf wie folgt vornehmen:

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

Es wird ein Ergebnis zurückgegeben, das wie im folgenden 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, dividiert durch die Summe der abgeschlossenen Arbeit plus die Summe der verbleibenden Arbeit, 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 Flow Diagramms aus Aggregatdaten

Angenommen, Sie möchten ein kumulatives Flussdiagramm in Power BI erstellen. Sie können eine Abfrage verwenden, die der folgenden ähnelt:

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 zurückgegeben, das diesem Beispiel ähnelt. Sie können es 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 macht:

  • Filtert die Daten an ein bestimmtes Team
  • Filtert die Daten in ein bestimmtes Backlog.
  • Gibt die Anzahl der Arbeitselemente zurück.

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

Nächste Schritte