Freigeben über


Erstellen von OData-Abfragen für Analytics in Azure DevOps

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

Analytics macht Azure DevOps-Projektdaten über einen OData-Endpunkt verfügbar, den Sie von jedem unterstützten Webbrowser oder Clienttool abfragen können. Dieses Lernprogramm führt Sie durch die Abfrage-URL-Struktur – Metadaten, Entitätssätze und Abfrageoptionen – damit Sie mit der Erstellung Eigener Anforderungen beginnen können. Einen Vergleich der Abfragetools finden Sie unter Analyseabfragetools.

In diesem Tutorial erfahren Sie, wie:

  • Abfragen der Analysemetadaten.
  • Ein Entitätssatz abfragen.
  • Wenden Sie Abfrageoptionen in der empfohlenen Reihenfolge an.
  • Verarbeitung der serverseitigen Paginierung.

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.

Voraussetzungen

Kategorie Anforderungen
Zugriffsebenen - Projektmitglied.
- Mindestens Basis-Zugriff.
Berechtigungen 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.

Abfragen der Metadaten

Um das OData-Entitätsmodell abzurufen, hängen Sie $metadata an die Stamm-URL des Analytics-Dienstes an. Die Metadaten beschreiben die Datenelemente, die Sie in Abfragen verwenden können, einschließlich:

  • Entitätstypen, Entitätssätze und Container
  • Eigenschaften und Navigations-Eigenschaften
  • Ersatzschlüssel und aufgezählte Listen
  • Unterstützte Filterfunktionen (Org.OData.Capabilities.V1.FilterFunctions)
  • Unterstützte Aggregationen (Org.OData.Aggregation.V1.ApplySupported)
  • Batchunterstützungstyp (Org.OData.Capabilities.V1.BatchSupportType)

Geben Sie die folgende URL in einem Webbrowser ein. Ersetzen Sie <OrganizationName> und <ProjectName> durch Ihre eigenen Werte. Lassen Sie den Projektnamen weg, um Metadaten für die gesamte Organisation zurückzugeben.

https://analytics.dev.azure.com/<OrganizationName>/<ProjectName>/_odata/version/$metadata 

Die folgende Abfrage gibt beispielsweise Metadaten für die fabrikam Organisation zurück:

https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata  

Geben Sie die folgende URL in einem Webbrowser ein. Ersetzen Sie <ServerName>, <CollectionName> und <ProjectName> durch Ihre Werte. Lassen Sie den Projektnamen weg, um Metadaten für die gesamte Sammlung zurückzugeben.

https://<ServerName>/<CollectionName>/<ProjectName>/_odata/version/$metadata 

Die folgende Abfrage gibt beispielsweise Metadaten für den fabrikam Server und deren DefaultCollectionMetadaten zurück:

https://fabrikam/DefaultCollection/_odata/v4.0-preview/$metadata  

Hinweis

Die neueste OData-Version von Analytics ist v4.0-preview. Verwenden Sie diese Version für alle Abfragen für Azure DevOps. Weitere Informationen zu Analytics-Versionen und verfügbaren Daten finden Sie unter "Datenmodell für Analytics".

Die Metadatenantwort interpretieren

Der Metadatenendpunkt gibt ein XML-Dokument zurück, das zwei Hauptschemas enthält:

  • Microsoft.VisualStudio.Services.Analytics.Model — definiert Entitätstypen, Aufzählungstypen und deren Mitglieder.
  • Default — definiert Entitätscontainer, Entitätssätze und unterstützte OData-Filter-, Transformations- und Aggregationsfunktionen.

Das folgende Beispiel zeigt die allgemeine Struktur:

<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
    <edmx:DataServices>
        <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.VisualStudio.Services.Analytics.Model">
           <EntityType Name="Entity Name"/>
        </Schema>
        <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Default">
           <EntityContainer Name="Container"/>
        </Schema>
    </edmx:DataServices>
</edmx:Edmx>

Tipp

Einige Browser formatieren XML nicht zur Lesbarkeit. Suchen Sie online nach einem kostenlosen XML-Formatierer, oder verwenden Sie die Suchfunktion Ihres Browsers, um bestimmte Entitätsnamen in der Rohausgabe zu finden.

Weitere Informationen finden Sie unter Analytics-OData-Metadaten.

Eigenschaften und Navigationseigenschaften

Die Metadaten für jeden Entitätstyp listet zwei Arten von Mitgliedern auf, die Sie in Abfragen verwenden können:

  • Eigenschaften (Property) – entsprechen Arbeitsaufgabenfeldern und analysespezifischen Daten wie LeadTimeDays und CycleTimeDays. Verwenden Sie Eigenschaften in $select, $filterund $orderby Klauseln.
  • Navigationseigenschaften (NavigationProperty) – Verknüpfung mit verwandten Entitätssätzen wie Revisions, , Links, Children, Parentund Teams. Verwenden Sie Navigationseigenschaften, um nach verwandten Entitäten wie Iterationspfaden, Bereichspfaden oder Teams und in $expand Klauseln zu filtern.

Der folgende Codeausschnitt zeigt eine teilweise Ansicht der Entitätsmetadaten WorkItem :

<Key>
   <PropertyRef Name="WorkItemId"/>
</Key>
<Property Name="WorkItemId" Type="Edm.Int32" Nullable="false">
   <Annotation Term="Ref.ReferenceName" String="System.Id"/>
   <Annotation Term="Display.DisplayName" String="Work Item Id"/>
</Property>
<Property Name="InProgressDate" Type="Edm.DateTimeOffset">
   <Annotation Term="Display.DisplayName" String="InProgress Date"/>
</Property>
<Property Name="LeadTimeDays" Type="Edm.Double">
   <Annotation Term="Display.DisplayName" String="Lead Time Days"/>
</Property>
<Property Name="CycleTimeDays" Type="Edm.Double">
   <Annotation Term="Display.DisplayName" String="Cycle Time Days"/>
</Property>
...
<NavigationProperty Name="Teams" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.Team)"/>
<NavigationProperty Name="Revisions" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.WorkItemRevision)"/>
<NavigationProperty Name="Links" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.WorkItemLink)"/>
<NavigationProperty Name="Children" Type="Collection(Microsoft.VisualStudio.Services.Analytics.Model.WorkItem)"/>
<NavigationProperty Name="Parent" Type="Microsoft.VisualStudio.Services.Analytics.Model.WorkItem">
   <ReferentialConstraint Property="ParentWorkItemId" ReferencedProperty="WorkItemId"/>
</NavigationProperty>
<NavigationProperty Name="Project" Type="Microsoft.VisualStudio.Services.Analytics.Model.Project" Nullable="false">
   <ReferentialConstraint Property="ProjectSK" ReferencedProperty="ProjectSK"/>
</NavigationProperty>
...

Vollständige Eigenschaften- und Beziehungsdetails für jeden Servicebereich finden Sie unter:

Abfrageentitätssätze

Um Berichte zu erstellen, fragen Sie einen Entitätssatz wie WorkItems, WorkItemSnapshot, oder PipelineRuns. Eine vollständige Liste der unterstützten Entitäten finden Sie unter Analytics OData-Metadaten.

https://analytics.dev.azure.com/<OrganizationName>/<ProjectName>/_odata/version/<EntitySet>?<QueryOptions>

Die folgende Abfrage zählt beispielsweise Arbeitsaufgaben im Fabrikam Fiber Projekt:

https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?%20$apply=aggregate($count%20as%20Count)

Die Antwort gibt eine Anzahl von 1399 zurück.

{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(Count)",
"value": [
   {
   "@odata.id": null,
   "Count": 1399
   }
 ]
}
https://<ServerName>/<CollectionName>/<ProjectName>/_odata/version/<EntitySet>?<QueryOptions>

Die folgende Abfrage zählt beispielsweise Arbeitsaufgaben im Fabrikam Projekt auf dem fabrikam Server:

https://fabrikam/DefaultCollection/Fabrikam/_odata/v4.0-preview/WorkItems?%20$apply=aggregate($count%20as%20Count)

Die Antwort gibt eine Anzahl: 44

{
"@odata.context": "http://fabrikam/DefaultCollection/Fabrikam/_odata/v4.0-preview/$metadata#WorkItems(Count)",
"value": [
   {
      "@odata.id": null,
      "Count": 44
   }
 ]
}

Von Bedeutung

Schließen Sie immer eine $select- oder $apply-Klausel ein, um Nutzungsgrenzwerte zu vermeiden. Ohne einen gibt Analytics alle Spalten und Zeilen zurück, die für große Datasets langsam sein können und das serverseitige Paging über 10.000 Datensätze auslöst.

Beispiel: Auflisten von Projekten mit $select

Im folgenden Beispiel wird mit $select nur die ProjectName-Eigenschaft aus dem Projects-Entitätssatz zurückgegeben. Eine vollständige Liste der Entitätssätze finden Sie unter Datenmodell für Analytics.

https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/Projects?$select=ProjectName

Die Antwort listet die Projektnamen in der Organisation auf:

{
  "@odata.context": "https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#Projects(ProjectName)",
  "value": [
    { "ProjectName": "Basic Fabrikam" },
    { "ProjectName": "Fabrikam Fiber" },
    { "ProjectName": "MyFirstProject" },
    { "ProjectName": "Fabrikam Test" },
    { "ProjectName": "MyPublicProject" }
  ]
}
https://fabrikam/DefaultCollection/_odata/v4.0-preview/Projects?$select=ProjectName

Die Antwort listet die Projektnamen in der Sammlung auf:

{
  "@odata.context": "http://fabrikam/DefaultCollection/_odata/v4.0-preview/$metadata#Projects(ProjectName)",
  "value": [
    { "ProjectName": "Fabrikam Fiber" },
    { "ProjectName": "Fabrikam" },
    { "ProjectName": "Fabrikam Florida" }
  ]
}

Verwenden von Abfrageoptionen

Fügen Sie Abfrageoptionen an die URL an, um die Antwort zu gestalten. Geben Sie sie in der hier gezeigten Reihenfolge an.

Abfrageoption Description Beispiele
$apply Transformiert Ergebnisse mit filter, , groupby, aggregate, compute, , expandoder concat. Aggregatdaten
$compute Definiert berechnete Eigenschaften für die Verwendung in $select, , $filteroder $orderby.
$filter Gibt nur Ressourcen zurück, bei denen der Ausdruck zu true ausgewertet wird. Ressourcen, die auf false, null ausgewertet werden oder aufgrund von Berechtigungseinschränkungen nicht verfügbar sind, werden weggelassen. Abfragen von Arbeitsnachverfolgungsdaten
$orderby Legt die Sortierreihenfolge der zurückgegebenen Datensätze fest. Abfragen von Arbeitsnachverfolgungsdaten
$top / $skip Schränkt die Anzahl der zurückgegebenen Datensätze ein oder überspringt eine angegebene Zahl. Organisationsbezogene Abfragen
$select Gibt an, welche Spalten zurückgegeben werden sollen.
$expand Enthält verwandte Entitäten direkt im Text. Übergeben Sie geschachtelte Abfrageoptionen ($filter, $select, $orderby, $skip, $top, $count, $search, $expand) in Klammern nach dem Namen der Navigationseigenschaft. Analyserezepte
$skiptoken Wechselt zur nächsten Ergebnisseite (verwendet bei serverseitigem Paging).
$count=true Fügt der Antwort eine Gesamtanzahl von Datensätzen hinzu. Verwenden Sie $count allein, um nur die Anzahl zurückzugeben. Aggregatdaten

Tipp

Kombinieren Sie $apply und $filter nicht in derselben Abfrage. Verwenden Sie eine oder die andere. Verwenden Sie $applyzum Filtern innerhalb einer $apply=filter(...) Klausel . Das Mischen beider Ergebnisse kann zu unerwarteten Ergebnissen führen.

Grundlegendes zur serverseitigen Paging

Wenn eine Abfrage mehr als 10.000 Datensätze zurückgibt, werden die Ergebnisse von Analytics automatisch aufgeteilt. Die Antwort enthält eine @odata.nextLink URL, die auf die nächste Seite verweist. Clienttools wie Power BI Desktop und Excel folgen diesen Links automatisch.

Das folgende Beispiel zeigt eine paginierte Antwort:

{
  "@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems",
  "value":[
   // first 10,000 records
  ],
  "@odata.nextLink":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$skiptoken=10000"
}

Wenn Sie aus dem Code abfragen, folgen Sie jedem @odata.nextLink, bis die Antwort keines mehr enthält.

Verwenden von KI zum Erstellen von Analyseabfragen

Wenn Sie den Azure DevOps MCP-Server konfigurieren, können Sie KI-Assistenten verwenden, um OData-Abfragen für Analytics zu erstellen.

Beispielaufforderungen zum Erstellen von Abfragen

Aufgabe Beispielaufforderung
Abfragen von Metadaten Show me the properties available for the WorkItems entity set in <Contoso> organization
Erstellen einer einfachen Abfrage Write an OData query to list all active user stories in <Contoso> project
Filtern und Sortieren Write an OData query to get bugs with priority 1, sorted by created date, in <Contoso> project
Auswählen bestimmter Spalten Write an OData query that returns only the Title, State, and AssignedTo for work items in <Contoso> project
Verwenden von Aggregationen Write an OData query that groups work items by state and counts them in <Contoso> project
Paging behandeln Explain how to handle server-side paging when querying Analytics for large datasets
Projektübergreifende Abfrage Write an OData query to get all bugs across all projects in <Contoso> organization
Snapshot-Abfrage Write an OData query using WorkItemSnapshot to show a burndown of remaining work over the last sprint in <Contoso> project
Veraltete Arbeitsaufgaben Write an OData query to find work items that haven't been updated in the last 30 days in <Contoso> project
Teamarbeitsauslastung Write an OData query that shows how many active work items are assigned to each team member in <Contoso> project
Pipelinefehler Write an OData query to list the pipeline runs that failed in the last 7 days in <Contoso> project

Nächster Schritt