Freigeben über


Definieren grundlegender Abfragen mithilfe von OData Analytics

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

Verwenden Sie Analytics-OData-Abfragen, um Arbeitsverfolgungsdaten aus Azure DevOps in Ihrem Browser oder in Clienttools wie Excel und Power BI abzurufen. Dieser Artikel behandelt das Zählen von Elementen, Auswählen bestimmter Felder mit $select, Filtern mit $filter, Erweitern von Navigationseigenschaften mit $expand, Abfragen von Datumsbereichen und Sortieren mit $orderby.

Tipp

Sie können KI verwenden, um Ihnen bei dieser Aufgabe zu helfen später in diesem Artikel oder sehen Sie sich an, wie Sie die KI-Unterstützung bei Azure DevOps MCP Server aktivieren, um loszulegen.

Die Beispiele konzentrieren sich auf Azure Boards Work Tracking Entity Sets, aber die gleichen Prinzipien gelten für andere Entitätssätze. Weitere Informationen finden Sie unter Erstellen von OData-Abfragen für Die Analyse - und Metadatenreferenz für Azure Boards Analytics.

Hinweis

Der Analysedienst wird automatisch aktiviert und in der Produktion für alle Dienste in Azure DevOps Services unterstützt. Power BI-Integration und Zugriff auf den OData-Feed des Analytics-Diensts sind allgemein verfügbar. Sie werden dazu ermutigt, den OData-Datenfeed für Analytics zu verwenden und Feedback zu geben.

Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version der OData-API 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. Sie werden dazu ermutigt, den OData-Datenfeed für Analytics zu verwenden und Feedback zu geben. Wenn Sie ein Upgrade von Azure DevOps Server 2019 durchführen, können Sie den Analysedienst während des Upgrades installieren.

Verfügbare Daten sind versionsabhängig. Die neueste unterstützte Version der OData-API ist v2.0, und die neueste Vorschauversion ist v4.0-preview. Weitere Informationen finden Sie unter OData-API-Versionsverwaltung.

Voraussetzungen

Kategorie Anforderungen
Zugriffsebenen - Projektmitglied.
– Mindestens einfacher Zugriff.
Erlaubnisse Standardmäßig verfügen Projektmitglieder über die Berechtigung zum Abfragen von Analysen und Erstellen von Ansichten. Weitere Informationen zu anderen Voraussetzungen für die Dienst- und Featureaktivierung sowie allgemeine Datenverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics.

Hinweis

  • Projektübergreifende Abfragen schlagen fehl, wenn der Benutzer, der die Abfrage ausführt, keinen Zugriff auf alle Projekte hat. Weitere Informationen finden Sie unter Project- und organisationsbezogenen Abfragen.
  • Die Beispiele in diesem Artikel verwenden das AZURE DevOps Services-URL-Format: https://analytics.dev.azure.com/{OrganizationName}/. Verwenden Sie https://{servername}/{CollectionName}/ stattdessen für Azure DevOps Server. Weitere Informationen finden Sie unter Erstellen von OData-Abfragen für Analytics.

Anzahl der Elemente ermitteln

Um nur eine Anzahl ohne andere Daten zurückzugeben, fügen Sie $apply=aggregate($count as Count) an eine beliebige Entitätssatz-URL an. Die folgenden Abfragen zählen beispielsweise Projekte, Arbeitselemente, Bereichspfade und Benutzer in einer Organisation:

https://analytics.dev.azure.com/<OrganizationName>/_odata/v4.0-preview/Projects?$apply=aggregate($count as Count)
https://analytics.dev.azure.com/<OrganizationName>/_odata/v4.0-preview/WorkItems?$apply=aggregate($count as Count)
https://analytics.dev.azure.com/<OrganizationName>/_odata/v4.0-preview/Areas?$apply=aggregate($count as Count)
https://analytics.dev.azure.com/<OrganizationName>/_odata/v4.0-preview/Users?$apply=aggregate($count as Count)

Die Projects Abfrage für die fabrikam Organisation gibt Folgendes zurück:

{
  "value": [
    {
      "Count": 16
    }
  ]
}

Anzahl der Elemente und deren Daten erfassen

Um eine Anzahl zusammen mit den Daten zurückzugeben, fügen Sie $count=true zu einer Abfrage hinzu, die eine $select-Klausel enthält. Die folgenden Abfragen geben eine Anzahl plus ausgewählte Eigenschaften für Arbeitsaufgaben, Bereichspfade und Benutzer in einem Projekt zurück:

https://analytics.dev.azure.com/<OrganizationName>/<ProjectName>/_odata/v4.0-preview/WorkItems?$count=true&$select=WorkItemId,Title,WorkItemType 
https://analytics.dev.azure.com/<OrganizationName>/<ProjectName>/_odata/v4.0-preview/Areas?$count=true&$select=AreaName,AreaPath 
https://analytics.dev.azure.com/<OrganizationName>/<ProjectName>/_odata/v4.0-preview/Users?$count=true&$select=UserName,UserEmail

Hinweis

Schließen Sie immer $select oder $apply in Ihre Abfrage ein. Das Auslassen beider Trigger löst eine Warnung aus und kann Nutzungsgrenzwerte erreichen.

Gültige Eigenschaftennamen finden Sie unter Metadatenreferenz für Azure Boards Analytics und Kalenderdatum, Project und Benutzermetadatenreferenz.

Die folgende Abfrage gibt beispielsweise die Anzahl und benutzernamen im Fabrikam Fiber-Projekt zurück:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/Users?$count=true&$select=UserName

Die Antwort umfasst die Gesamtanzahl in @odata.count und die übereinstimmenden Datensätze in value.

{
  "@odata.count": 5,
  "value": [
    { "UserName": "Microsoft.VisualStudio.Services.TFS" },
    { "UserName": "fabrikamfiber1@hotmail.com" },
    { "UserName": "Jamal Hartnett" },
    { "UserName": "fabrikamfiber5@hotmail.com" },
    { "UserName": "fabrikamfiber2@hotmail.com" }
  ]
}

Auswählen bestimmter Eigenschaften oder Felder

Fügen Sie eine $select Klausel hinzu, um nur die benötigten Eigenschaften zurückzugeben. Bei Eigenschaftsnamen wird die Groß-/Kleinschreibung beachtet, darf keine Leerzeichen enthalten und den Namen von Arbeitsaufgabenfeldern entsprechen. Gibt beispielsweise $select=WorkItemId,WorkItemType,Title,State diese vier Felder zurück.

Informationen zu Eigenschaftennamensuchvorgängen, einschließlich benutzerdefinierter Felder, finden Sie in der Metadatenreferenz für Azure Boards.

Die folgende Abfrage gibt die ID, den Typ, den Titel und den Zustand für die drei wichtigsten Arbeitsaufgaben im Fabrikam Fiber-Projekt zurück:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,WorkItemType,Title,State&$top=3
{
  "value": [
    { "WorkItemId": 31, "Title": "About screen", "WorkItemType": "Task", "State": "New" },
    { "WorkItemId": 30, "Title": "Change background color", "WorkItemType": "Task", "State": "Active" },
    { "WorkItemId": 32, "Title": "Standardize on form factors", "WorkItemType": "Task", "State": "Active" }
  ]
}

Filtern von Daten

Fügen Sie eine $filter Klausel hinzu, um nur Elemente zurückzugeben, die bestimmten Kriterien entsprechen. Verwenden Sie Vergleichsoperatoren wie eq, ne, gt, ge, lt und le, und kombinieren Sie Bedingungen mit and und or. Die folgende Abfrage gibt beispielsweise Features zurück, die ausgeführt werden:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,AssignedTo,State&$filter=WorkItemType eq 'Feature' and State eq 'In Progress'

Kombinieren mehrerer Filterbedingungen

Verwenden Sie Klammern, um or Bedingungen innerhalb eines breiteren Filters zu gruppierenand. Die folgende Abfrage gibt Benutzergeschichten, Fehler und einen benutzerdefinierten Typ in bestimmten Zuständen zurück:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,AssignedTo,State&$filter=(WorkItemType eq 'User Story' or WorkItemType eq 'Bug' or WorkItemType eq 'Backlog Work') and (State eq 'New' or State eq 'Committed' or State eq 'Active')
{
  "value": [
    { "WorkItemId": 210, "Title": "Slow response on form", "State": "Active" },
    ...
    { "WorkItemId": 160, "Title": "Game store testing", "State": "New" }
  ]
}

Sie können auch Zeichenfolgenfunktionen wie contains, startswithund endswith in Filterausdrücken verwenden. Weitere Informationen finden Sie unter "Unterstützte Funktionen".

Eigenschaften des Abfragebereichspfads oder Iterationspfads

Für einige Abfragen ist anstelle der Pfadzeichenfolge der Ersatzschlüssel (AreaSK oder IterationSK) erforderlich. Verwenden Sie die Entitätssätze "Bereiche" oder "Iterationen ", um den Schlüssel für einen bestimmten Pfad nachzuschlagen.

Geben Sie das AreaSK für einen bestimmten Bereichspfad zurück

Die folgende Abfrage gibt AreaSK für den Bereichspfad Fabrikam Fiber\Production Planning\Web zurück. Weitere verfügbare Eigenschaften finden Sie unter "Bereiche".

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/Areas?$filter=AreaPath eq 'Fabrikam Fiber\Production Planning\Web'&$select=AreaSK
{
  "value": [
    { "AreaSK": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }
  ]
}

Zurückgeben des IterationSK für einen bestimmten Iterationspfad

Die folgende Abfrage gibt den Wert IterationSK für den Iterationspfad Fabrikam Fiber\Release 1\Sprint 3 zurück. Weitere verfügbare Eigenschaften finden Sie unter Iterationen.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/Iterations?$filter=IterationPath eq 'Fabrikam Fiber\Release 1\Sprint 3'&$select=IterationSK

Nach Navigationseigenschaften filtern

Navigationseigenschaften wie Iteration, Areaund AssignedTo stellen Beziehungen zu anderen Entitäten dar. Verwenden Sie den vollständigen Pfad im Format NavigationProperty/Field, um nach einem Feld aus einer verknüpften Entität zu filtern. Verweist beispielsweise Iteration/IterationPath auf das IterationPath Feld über die Iteration Navigationseigenschaft:

/WorkItems?$filter=Iteration/IterationPath eq 'Project Name\Iteration 1'

Die folgende Abfrage gibt die fünf wichtigsten Arbeitsaufgaben in einer bestimmten Iteration mithilfe des vollständigen Navigationspfads zurück:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$top=5&$filter=Iteration/IterationPath eq 'Fabrikam Fiber\3Week Sprints\Sprint 3'&$select=WorkItemId,WorkItemType,Title,State&$orderby=WorkItemId asc

Das Filtern nach einer Navigationseigenschaft führt dazu, dass deren Daten nicht in der Antwort enthalten sind. Um Felder aus einer verknüpften Entität zurückzugeben, verwenden Sie $expand. Ohne $expand können Sie nicht auf Navigationsattribute über $select zugreifen.

Die folgende Abfrage gibt Arbeitsaufgabe 480 mit allen Feldern aus der erweiterten Iteration Entität zurück:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 480&$select=WorkItemId,WorkItemType,Title,State&$expand=Iteration

Da keine $select auf die Iteration Erweiterung angewendet wird, enthält die Antwort jedes Iteration Feld:

{
  "value": [
    {
      "WorkItemId": 480,
      "Title": "Add animated emoticons",
      "WorkItemType": "User Story",
      "State": "New",
      "Iteration": {
        "ProjectSK": "bbbbbbbb-1111-2222-3333-cccccccccccc",
        "IterationSK": "cccccccc-2222-3333-4444-dddddddddddd",
        "IterationName": "Sprint 3",
        "IterationPath": "Fabrikam Fiber\\3Week Sprints\\Sprint 3",
        "StartDate": "2025-12-04T00:00:00-12:00",
        "EndDate": "2025-12-25T23:59:59.999-12:00",
        "IterationLevel1": "Fabrikam Fiber",
        "IterationLevel2": "3Week Sprints",
        "IterationLevel3": "Sprint 3",
        ...
        "Depth": 2,
        "IsEnded": false
      }
    }
  ]
}

Auswahl in expand-Anweisungen verwenden

Um die von einer erweiterten Entität zurückgegebenen Felder einzuschränken, fügen Sie eine $select Klausel in der Verwendung der $expand Syntax $expand=Entity($select=Field1,Field2)hinzu. Die folgende Abfrage erweitert Iteration, gibt jedoch nur IterationName und IterationPath zurück.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 480&$select=WorkItemId,WorkItemType,Title,State&$expand=Iteration($select=IterationName,IterationPath)
{
  "value": [
    {
      "WorkItemId": 480,
      "Title": "Add animated emoticons",
      "WorkItemType": "User Story",
      "State": "New",
      "Iteration": {
        "IterationName": "Sprint 3",
        "IterationPath": "Fabrikam Fiber\\3Week Sprints\\Sprint 3"
      }
    }
  ]
}

Die folgende Tabelle enthält $expand und $select Beispiele für Typen von allgemeinen Navigationseigenschaften:

Navigationstyp Schlüsseleigenschaft Beispielklauseln
Datum/Uhrzeit DateSK $expand=CreatedDate($select=Date) oder
$expand=CreatedDate($select=WeekStartingDate)
Identität UserSK $expand=AssignedTo($select=UserName) oder
$expand=AssignedTo($select=UserEmail)
Bereich AreaSK $expand=Area($select=AreaName) oder
$expand=Area($select=AreaPath)
Wiederholung IterationSK $expand=Iteration($select=IterationName) oder
$expand=Iteration($select=IterationPath) oder
$expand=Iteration($select=StartDate)
Projekt ProjectSK $expand=Project($select=ProjectName)
Team TeamSK $expand=Teams($select=TeamName)

Um mehrere Navigationseigenschaften in einer einzelnen Abfrage zu erweitern, verwenden Sie eine durch Trennzeichen getrennte Liste:

$expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath)

Verwenden von geschachtelten Expand-Anweisungen

Wenn Sie eine Navigationseigenschaft innerhalb einer bereits erweiterten Entität erweitern möchten, verschachteln Sie eine $expand innerhalb einer anderen. Die folgende Abfrage erweitert Iteration und anschließend Project innerhalb von Iteration, um anzuzeigen, zu welchem Projekt die Iteration gehört.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 480&$select=WorkItemId,WorkItemType,Title,State&$expand=Iteration($expand=Project)

Um geschachtelte Erweiterung mit $select zu kombinieren, verwenden Sie ein Semikolon (;), um innerhalb der Klammern $select von $expand zu trennen. Ohne semikolon gibt die Abfrage einen Fehler zurück. Die folgende Abfrage gibt nur IterationName und IterationPath aus Iteration zurück, und die geschachtelte Project.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 480&$select=WorkItemId,WorkItemType,Title,State&$expand=Iteration($select=IterationName,IterationPath;$expand=Project)
{
  "value": [
    {
      "WorkItemId": 480,
      "Title": "Add animated emoticons",
      "WorkItemType": "User Story",
      "State": "New",
      "Iteration": {
        "IterationName": "Sprint 3",
        "IterationPath": "Fabrikam Fiber\\3Week Sprints\\Sprint 3",
        "Project": {
          "ProjectSK": "bbbbbbbb-1111-2222-3333-cccccccccccc",
          "ProjectName": "Fabrikam Fiber"
        }
      }
    }
  ]
}

Datumsspanne abfragen

Die folgende Beispielabfrage gibt Arbeitsaufgaben zurück, deren letztes Änderungsdatum größer oder gleich dem 1. Januar 2025 ist.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,WorkItemType,Title,State&$filter=ChangedDate ge 2025-01-01Z

Die folgende Beispielabfrage gibt Arbeitsaufgaben zurück, deren letztes Änderungsdatum in der Woche vom 31. Oktober bis zum 7. November 2025 aufgetreten ist.

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,WorkItemType,Title,State&$filter=ChangedDate ge 2025-10-31Z and ChangedDate le 2025-11-07Z

Ergebnisse sortieren

Fügen Sie $orderby hinzu, um Ergebnisse nach einer oder mehreren Eigenschaften zu sortieren. Ergebnissortierung in aufsteigender Reihenfolge standardmäßig; anfügen desc für absteigend. Trennen Sie mehrere Sortierfelder durch Kommas.

Sortieren nach Klausel
ID des Arbeitselements /WorkItems?$orderby=WorkItemId
Arbeitselement-ID (neueste zuerst) /WorkItems?$orderby=WorkItemId desc
Arbeitselementtyp, dann Status /WorkItems?$orderby=WorkItemType,State

Verwenden von KI zum Erstellen von OData-Abfragen

Wenn Sie den Azure DevOps MCP-Server konfigurieren, können Sie KI-Assistenten verwenden, um OData-Abfragen zu erstellen und zu beheben.

Beispiel-Prompts

Aufgabe Beispielaufforderung
Erstellen einer Abfrage Write an OData query that returns all active bugs with their area path and assigned-to fields in <Contoso> project
Nach Datum filtern Create an OData query that returns work items created in the last 30 days in <Contoso> project
Erweitern von Navigationseigenschaften Write an OData query that expands the iteration path and area path for user stories in <Contoso> project
Debuggen einer Abfrage My OData query returns no results — help me troubleshoot the filter clause and URL format for <Contoso> project
Geschachtelte Erweiterung Write an OData query with nested expand to return work items with their parent details in <Contoso> project
Sortieren und Einschränken von Ergebnissen Create an OData query that returns the 20 most recently changed bugs ordered by changed date in <Contoso> project
Anzahl nach Arbeitsaufgabentyp Write an OData query that counts work items grouped by work item type for <Contoso> project
Filtern mit Zeichenfolgenfunktionen Create an OData query that returns work items whose title contains "login" in <Contoso> project
Kombinieren von Auswahl, Filtern und Erweitern Write an OData query that returns the title, state, assigned-to name, and iteration path for all user stories in the current sprint in <Contoso> project

Nächster Schritt