Abfragen von Arbeitsnachverfolgungsdaten mithilfe von Analytics

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

Sie können Ihre Azure DevOps-Arbeitsnachverfolgungsdaten mithilfe der grundlegenden Abfragen in diesem Artikel abfragen. Diese Abfragen erfüllen den täglichen Bedarf, während verschiedene Funktionen von Analytics veranschaulicht werden. Sie können die meisten dieser Abfragen an Ihre Anforderungen anpassen.

Dieser Artikel baut auf Informationen auf, die im Erstellen von OData-Abfragen für Analyse - und Metadatenreferenz für Azure Boards Analytics bereitgestellt werden.

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.

Voraussetzungen

  • Um Analytics-Daten anzuzeigen und den Dienst abzufragen, müssen Sie Mitglied eines Projekts mit oder höherer Basiszugriff sein. Standardmäßig erhalten alle Projektmitglieder Berechtigungen zum Abfragen von Analytics und zum Definieren von Analytics-Ansichten.
  • Weitere Informationen zu weiteren Voraussetzungen für die Dienst- und Featureaktivierung sowie allgemeine Datennachverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics.

Alle Beispiele gelten für ein Projekt in Azure DevOps. Beispiele für die Bereichsdefinition auf Organisationsebene oder Azure DevOps Server finden Sie unter Project- und organisationsbezogene Abfragen.

Tipp

Sie können die WIQL zu OData Azure DevOps Marketplace-Erweiterung verwenden, um schnell eine OData-Abfrage basierend auf einer Arbeitsaufgabenabfrage auf der Seite "Abfragen " zu generieren. Diese Erweiterung unterstützt die Konvertierung einer flachen Liste von Arbeitsaufgaben und Arbeitselementen und direkten Links. Erweiterungen werden von Azure Boards nicht unterstützt und werden daher vom Produktteam nicht unterstützt. Wenn Sie Fragen, Vorschläge zu der Verwendung dieser Erweiterungen haben oder Probleme auftreten, besuchen Sie bitte die entsprechende Erweiterungsseite.

Filtern von Arbeitsaufgaben basierend auf einem geänderten Datum

Sie fragen die WorkItems Entitätsmenge ab, um Arbeitsaufgaben auflisten, die Ihren Feldkriterien entsprechen.

Die folgende Abfrage gibt Produktrückstellungselemente, Fehler und Features zurück, die ein geändertes Datum aufweisen, das größer als der 12. Dezember 2021 ist.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems?
  $select=WorkItemId, WorkItemType, Title, State 
  &$expand=AssignedTo($select=UserEmail)
  &$filter=(Project/ProjectName eq 'Fabrikam Fiber'
    AND (WorkItemType eq 'Product Backlog Item' or WorkItemType eq 'Bug' or WorkItemType eq 'Feature')
    AND ChangedOn/Date ge 2021-12-16T23:44:15.619Z)
  &$orderby=WorkItemType desc 

Filtern von Arbeitsaufgaben basierend auf "Bereich"

Sie können die folgende Abfrage so ändern, dass alle Arbeitsaufgaben unter einem bestimmten Bereichspfad aufgeführt werden.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=Area/AreaPath eq '{area path}'
  &$select=WorkItemId, Title, State

Beispielabfrage:

Die folgende Syntax fragt beispielsweise die Anzahl der Arbeitsaufgaben für jedes Projekt ab, das für die Fabrikam-Organisation definiert ist.

https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$apply=groupby((Project/ProjectName), aggregate($count as Count))

Beispielantwort:

Und die Antwort gibt Daten für die folgenden fünf Projekte zurück.

{
   "@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(Project(ProjectName),Count)",
   "value":[
      {
         "@odata.id":null,
         "Count":2,
         "Project":{
            "@odata.id":null,
            "ProjectName":"Basic Fabrikam"
         }
      },
      {
         "@odata.id":null,
         "Count":19,
         "Project":{
            "@odata.id":null,
            "ProjectName":"Demo 11"
         }
      },
      {
         "@odata.id":null,
         "Count":188,
         "Project":{
            "@odata.id":null,
            "ProjectName":"Fabrikam Fiber"
         }
      },
      {
         "@odata.id":null,
         "Count":89,
         "Project":{
            "@odata.id":null,
            "ProjectName":"MyFirstProject"
         }
      },
      {
         "@odata.id":null,
         "Count":2,
         "Project":{
            "@odata.id":null,
            "ProjectName":"MyPublicProject"
         }
      }
   ]
}

Filtern von Arbeitsaufgaben basierend auf Iteration

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=Iteration/IterationPath eq '{iteration path}'
  &$select=WorkItemId, Title, State

Beispielabfrage:

Die folgende Syntax fragt beispielsweise Arbeitsaufgaben für das Fabrikam Fiber-Projekt unter dem Iterationspfad =Fabrikam Fiber\Release 1\Sprint 6 ab.

https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$select=WorkItemId, WorkItemType, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemType ne '' AND Iteration/IterationPath eq 'Fabrikam Fiber\Release 1\Sprint 6')

Beispielantwort:

Und die Antwort gibt Daten für die folgenden vier Arbeitsaufgaben zurück.

{
   "@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,WorkItemType,Title,State,Iteration(IterationPath))",
   "value":[
      {
         "WorkItemId":361,
         "Title":"Hello World Web Site",
         "WorkItemType":"Product Backlog Item",
         "State":"New",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
         }
      },
      {
         "WorkItemId":1126,
         "Title":"web site task",
         "WorkItemType":"Task",
         "State":"To Do",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
         }
      },
      {
         "WorkItemId":1136,
         "Title":"Add a new task with two new tags",
         "WorkItemType":"Task",
         "State":"To Do",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
         }
      },
      {
         "WorkItemId":1140,
         "Title":"New task - test for Blocked",
         "WorkItemType":"Task",
         "State":"To Do",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
         }
      }
   ]
}

Abrufen von Elementen für eine Iteration

Sie können alle Arbeitsaufgaben für eine bestimmte Iteration abrufen, die zwischen dem ersten Tag der Iteration und dem letzten Tag der Iteration liegen. Hier wird Ihre Abfrage durch Daten eingeschränkt, die in den Arbeitsverfolgungsdaten enthalten sind.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=Iteration/IterationPath eq '{iteration path}' 
    and ChangedDate ge Iteration/StartDate 
    and ChangedDate le Iteration/EndDate
  &$select=WorkItemId, Title, State

Filtern von Arbeitsaufgaben mit bestimmten Tags

Der beliebige Operator wird hier verwendet, da es eine Sammlung von Tags gibt, die einem Arbeitselement zugeordnet werden können. Aus Verwendungsperspektive lautet das Format: {Navigation Property}/any(d:d/{Field Name} {operator} {expression}). Ein Element, das nicht von geschweiften Klammern ({}) umgeben ist, ist ein Literal. Es gibt einige Variationen. Sie müssen z. B. "d" nicht wie im obigen Ausdruck verwenden. Wenn Sie diesem Format folgen, bleibt es einfach.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=Tags/any(d:d/TagName eq '{tag name}')
  &$select=WorkItemId, Title, State

Filtern von Arbeitsaufgaben für ein bestimmtes Team

Verwenden Sie die folgende Abfrage, um Arbeitsaufgaben für ein bestimmtes Team auflisten.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=Teams/any(d:d/TeamName eq '{team name}')
  &$select=WorkItemId, Title, State

Filtern von Arbeitsaufgaben basierend auf einem Feld mit einem bestimmten Wert

Die folgende Abfrage ähnelt einer Arbeitsaufgabenabfrage, die den Was Ever-Operator verwendet.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
  $filter=WorkItemType eq '{Type}'
     and Revisions/any(r:r/ResolvedBy/UserName eq '{User}') 

Beispielabfrage:

Die folgende Abfrage gibt die Arbeitsaufgaben zurück, die je Jamal Hartnett zugewiesen wurden, dessen E-Mail für das Fabrikam Fiber-Projekt "fabrikamfiber4@hotmail.com" lautet.

https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/WorkItems?
  $select=WorkItemType, Title, State, 
  &$expand=AssignedTo($select=UserEmail), Area($select=AreaPath)
  &$filter=(WorkItemType ne '' AND State ne '' AND Revisions/any(r:r/AssignedTo/UserEmail eq 'fabrikamfiber4@hotmail.com'))
  &$orderby=WorkItemType asc

Beispielantwort:

Die Antwort gibt zwei Arbeitsaufgaben zurück.

{
   "@odata.context":"https://analytics.dev.azure.com/fabrikam/Design%20Agile/_odata/v4.0-preview/$metadata#WorkItems(Priority,WorkItemType,Title,State,TagNames,AssignedTo(UserEmail),Area(AreaPath))",
   "value":[
      {
         "Title":"New home page design",
         "WorkItemType":"Feature",
         "State":"Closed",
         "AssignedTo":{
            "UserEmail":"fabrikamfiber4@hotmail.com"
         },
         "Area":{
            "AreaPath":"Design Agile"
         }
      },
      {
         "Title":"Check performance",
         "WorkItemType":"User Story",
         "State":"New",
         "AssignedTo":{
            "UserEmail":"fabrikamfiber4@hotmail.com"
         },
         "Area":{
            "AreaPath":"Design Agile"
         }
      }
   ]
}

Abrufen der teams, die unter einem Bereichspfad zugewiesen sind

Die folgende Abfrage gibt die Namen von Teams zurück, die Bereichspfaden unter dem Bereich Kontoverwaltung für das Fabrikam Fiber-Projekt zugewiesen sind.

> https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/Areas?
>      $filter=startswith(AreaPath,'Fabrikam Fiber\Account Management')
>      &$select=AreaPath&$expand=Teams($select=TeamName)
>```
The response returns three area paths and the names of several teams assigned to each. 

> [!div class="tabbedCodeSnippets"]
```OData
> @odata.context	"https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#Areas(AreaPath,Teams(TeamName))"
> value	
> 0	
>   AreaPath             "Fabrikam Fiber\\Account Management\\Customer Profile"
>   Teams	
>       0	
>           TeamName     "Organization Management"
>       1	
>           TeamName     "Fabrikam Team"
>       2	
>           TeamName     "Customer Profile"
> 1	
>   AreaPath             "Fabrikam Fiber\\Account Management\\Shopping Cart"
>   Teams	
>       0	
>           TeamName     "Organization Management"
>       1	
>           TeamName     "Shopping Cart"
>       2	
>           TeamName     "Fabrikam Team"
> 2	
>   AreaPath             "Fabrikam Fiber\\Account Management"
>   Teams	
>       0	
>           TeamName     "Organization Management"
>       1	
>           TeamName     "Fabrikam Team"

Zurückgeben des Verlaufs eines bestimmten Arbeitselements

Sie fragen die Entität ab, die auf den WorkItemRevisions Listenarbeitselementverlauf festgelegt ist. Die folgende Abfrage gibt den Wert des Titels, des Zustands und des Iterationspfads für jede Überarbeitung für eine angegebene Arbeitsaufgabe zurück.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemRevisions?
  $filter=WorkItemId eq {Id}
  &$select=WorkItemId, Title, State, Iteration Path

Hinweis

Wenn eine Änderung an einer Arbeitsaufgabe vorgenommen wird, einschließlich einer Änderung an dem Stapelrangwert, wird eine Überarbeitung erstellt. Weitere Informationen zu historischen Daten finden Sie unter Anwenden von Filtern auf historische Daten.

Beispielabfrage:

Die folgende Syntax fragt beispielsweise Revisionen für ID=1145 im Fabrikam Fiber-Projekt ab.

https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/WorkItemRevisions?$select=WorkItemId, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemId eq 1145 AND State ne '' AND Revision gt 1)

Beispielantwort:

Und die Antwort gibt Daten für die vier Überarbeitungen zurück:

{
   "@odata.context":"https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItemRevisions(WorkItemId,Title,State,Iteration(IterationPath))",
   "value":[
      {
         "WorkItemId":1145,
         "Title":"Sprint 2 work added in June",
         "State":"New",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Future"
         }
      },
      {
         "WorkItemId":1145,
         "Title":"Sprint 2 work added in June",
         "State":"New",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Future"
         }
      },
      {
         "WorkItemId":1145,
         "Title":"Sprint 2 work added in June",
         "State":"New",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
         }
      },
      {
         "WorkItemId":1145,
         "Title":"Sprint 2 work added in June",
         "State":"Done",
         "Iteration":{
            "IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
         }
      }
   ]
}