Delen via


Basisquery's definiëren met OData Analytics

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

Gebruik OData-query's van Analytics om werktraceringsgegevens op te halen uit Azure DevOps in uw browser of in clienthulpprogramma's zoals Excel en Power BI. Dit artikel bevat informatie over het tellen van items, het selecteren van specifieke velden met $select, filteren met $filter, uitbreidende navigatie-eigenschappen met $expand, het opvragen van datumbereiken en sorteren met $orderby.

Aanbeveling

U kunt AI gebruiken om bij deze taak te helpen verderop in dit artikel, of zie AI-assistentie inschakelen met Azure DevOps MCP Server om te beginnen.

De voorbeelden richten zich op Azure Boards voor het bijhouden van entiteitssets, maar dezelfde principes zijn van toepassing op andere entiteitssets. Zie OData-query's maken voor analyse - en metagegevensreferenties voor Azure Boards Analytics voor meer informatie.

Notitie

De Analytics-service wordt automatisch ingeschakeld en ondersteund in productie voor alle services in Azure DevOps Services. Power BI-integratie en toegang tot de OData-feed van de Analytics-service zijn algemeen beschikbaar. U wordt aangemoedigd om de Analytics OData-feed te gebruiken en feedback te geven.

Beschikbare gegevens zijn afhankelijk van versie. De nieuwste ondersteunde versie van de OData-API is v2.0en de nieuwste preview-versie is v4.0-preview. Zie OData API-versiebeheer voor meer informatie.

Notitie

De Analytics-service wordt automatisch geïnstalleerd en ondersteund in productie voor alle nieuwe projectverzamelingen voor Azure DevOps Server 2020 en nieuwere versies. Power BI-integratie en toegang tot de OData-feed van de Analytics-service zijn algemeen beschikbaar. U wordt aangemoedigd om de Analytics OData-feed te gebruiken en feedback te geven. Als u een upgrade uitvoert van Azure DevOps Server 2019, kunt u de Analytics-service installeren tijdens de upgrade.

Beschikbare gegevens zijn afhankelijk van versie. De nieuwste ondersteunde versie van de OData-API is v2.0en de nieuwste preview-versie is v4.0-preview. Zie OData API-versiebeheer voor meer informatie.

Vereisten

Categorie Vereisten
Toegangsniveaus - een projectlid.
- Ten minste Basis toegang.
Toestemmingen Projectleden zijn standaard gemachtigd om query's uit te voeren op Analytics en weergaven te maken. Zie Machtigingen en vereisten voor toegang tot Analyse voor meer informatie over andere vereisten met betrekking tot het inschakelen van services en functies en algemene activiteiten voor het bijhouden van gegevens.

Notitie

  • Query's tussen projecten mislukken wanneer de gebruiker die de query uitvoert, geen toegang heeft tot alle projecten. Zie Project- en organisatiebrede queries voor meer informatie.
  • In de voorbeelden in dit artikel wordt de URL-indeling van Azure DevOps Services gebruikt: https://analytics.dev.azure.com/{OrganizationName}/. Gebruik in plaats daarvan voor Azure DevOps Server https://{servername}/{CollectionName}/ . Zie OData-query's maken voor analyse voor meer informatie.

Een telling van items verkrijgen

Als u alleen een telling wilt retourneren zonder andere gegevens, voegt u $apply=aggregate($count as Count) toe aan elke entiteitenset-URL. De volgende query's tellen bijvoorbeeld projecten, werkitems, gebiedspaden en gebruikers binnen een organisatie.

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)

De Projects query voor de fabrikam organisatie retourneert:

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

Haalt het aantal items en hun gegevens op

Om een telling samen met de gegevens te retourneren, voegt u $count=true toe aan een query die een $select clausule bevat. De volgende query's retourneren een telling plus geselecteerde eigenschappen voor werkitems, vlakpaden en gebruikers in een project:

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

Notitie

Zorg ervoor dat u altijd $select of $apply in uw query opneemt. Als u beide triggers weglaat, volgt er een waarschuwing en kunnen de gebruikslimieten worden bereikt.

Zie voor geldige eigenschapsnamen de naslaginformatie over metagegevens van Azure Boards Analytics en de naslaginformatie over kalenderdatum, Project en gebruikersmetagegevens.

De volgende query retourneert bijvoorbeeld het aantal en de gebruikersnamen in het Fabrikam Fiber-project :

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

Het antwoord bevat het totale aantal in @odata.count en de overeenkomende records 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" }
  ]
}

Specifieke eigenschappen of velden selecteren

Voeg een $select component toe om alleen de eigenschappen te retourneren die u nodig hebt. Eigenschapsnamen zijn hoofdlettergevoelig, kunnen geen spaties bevatten en overeenkomen met veldnamen van werkitems. Retourneert bijvoorbeeld $select=WorkItemId,WorkItemType,Title,State deze vier velden.

Zie naslaginformatie voor metagegevens voor Azure Boards voor eigenschapsopzoekingen, inclusief aangepaste velden.

De volgende query retourneert de id, het type, de titel en de status voor de drie belangrijkste werkitems in het Fabrikam Fiber-project:

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" }
  ]
}

Gegevens filteren

Voeg een $filter component toe om alleen items te retourneren die voldoen aan specifieke criteria. Gebruik vergelijkingsoperatoren zoals eq, ne, gt, ge, lt en le, en combineer voorwaarden met and en or. De volgende query retourneert bijvoorbeeld functies die worden uitgevoerd:

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'

Meerdere filtervoorwaarden combineren

Gebruik haakjes om voorwaarden binnen een breder or filter te groeperenand. De volgende query retourneert gebruikersverhalen, bugs en een aangepast type in specifieke staten.

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" }
  ]
}

U kunt ook tekenreeksfuncties zoals contains, startswithen endswith in filterexpressies gebruiken. Zie Ondersteunde functies voor meer informatie.

Eigenschappen van pad naar querygebied of iteratiepad

Voor sommige query's is de surrogaatsleutel (AreaSK of IterationSK) vereist in plaats van de padtekenreeks. Gebruik de entiteit Gebieden of Iteraties om de sleutel voor een specifiek pad op te zoeken.

De AreaSK voor een specifiek gebiedspad retourneren

De volgende query retourneert het AreaSK voor het Fabrikam Fiber\Production Planning\Web gebiedspad. Zie Gebieden voor andere beschikbare eigenschappen.

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" }
  ]
}

Geef de IterationSK terug voor een specifiek iteratiepad

De volgende query geeft het IterationSK terug voor het Fabrikam Fiber\Release 1\Sprint 3 iteratiepad. Zie Iteraties voor andere beschikbare eigenschappen.

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

Filteren op navigatie-eigenschappen

Navigatie-eigenschappen zoals Iteration, Areaen AssignedTo vertegenwoordigen relaties met andere entiteiten. Als u wilt filteren op een veld van een gerelateerde entiteit, gebruikt u het volledige pad in de indeling NavigationProperty/Field. Verwijst bijvoorbeeld Iteration/IterationPath naar het IterationPath veld via de Iteration navigatie-eigenschap:

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

De volgende query retourneert de vijf belangrijkste werkitems in een specifieke iteratie, met behulp van het volledige navigatiepad:

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

Filteren op een navigatie-eigenschap bevat geen gegevens in het antwoord. Als u velden van een gerelateerde entiteit wilt retourneren, gebruikt u $expand. Zonder $expand, kunt u geen toegang krijgen tot navigatie-eigenschapsvelden via $select.

De volgende query retourneert werkitem 480 met alle velden uit de uitgebreide Iteration entiteit:

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

Omdat er geen $select wordt toegepast op de Iteration uitbreiding, bevat het antwoord elk Iteration veld:

{
  "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
      }
    }
  ]
}

Gebruik 'Select' in uitbreidingsinstructies

Als u de velden wilt beperken die worden geretourneerd door een uitgebreide entiteit, voegt u een $select clausule toe binnen de $expand met de syntaxis $expand=Entity($select=Field1,Field2). De volgende query breidt Iteration uit, maar retourneert alleen IterationName en IterationPath:

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"
      }
    }
  ]
}

In de volgende tabel ziet u $expand met $select voorbeelden voor algemene typen navigatie-eigenschappen.

Navigatietype Sleuteleigenschap Voorbeeldclausules
Datum en tijd DateSK $expand=CreatedDate($select=Date) of
$expand=CreatedDate($select=WeekStartingDate)
Identiteit UserSK $expand=AssignedTo($select=UserName) of
$expand=AssignedTo($select=UserEmail)
Gebied AreaSK $expand=Area($select=AreaName) of
$expand=Area($select=AreaPath)
Iteratie IterationSK $expand=Iteration($select=IterationName) of
$expand=Iteration($select=IterationPath) of
$expand=Iteration($select=StartDate)
Project ProjectSK $expand=Project($select=ProjectName)
Team TeamSK $expand=Teams($select=TeamName)

Als u meerdere navigatie-eigenschappen in één query wilt uitvouwen, gebruikt u een door komma's gescheiden lijst:

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

Gebruik geneste uitbreidingsverklaringen

Als u een navigatie-eigenschap binnen een al uitgevouwen entiteit wilt uitbreiden, nestt u de $expand ene binnen de andere. De volgende query breidt Iteration en vervolgens Project uit binnen Iteration om weer te geven tot welk project de iteratie behoort.

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)

Om geneste uitbreidingen met $select te combineren, gebruikt u een puntkomma (;) om $select te scheiden van $expand binnen de haakjes. Zonder de puntkomma retourneert de query een fout. De volgende query retourneert alleen IterationName en IterationPath van Iteration, plus het geneste 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"
        }
      }
    }
  ]
}

Een datumbereik opvragen

De volgende voorbeeldquery retourneert werkitems waarvan de laatste wijzigingsdatum groter is dan of gelijk is aan 1 januari 2025.

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

De volgende voorbeeldquery retourneert werkitems waarvan de laatste wijzigingsdatum plaatsvond in de week van 31 oktober tot en met 7 november 2025.

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

Resultaten sorteren

Voeg toe $orderby om resultaten te sorteren op een of meer eigenschappen. Resultaten sorteren standaard in oplopende volgorde; toevoegen desc voor aflopend. Scheid meerdere sorteervelden met komma's.

Sorteren op Clausule
Werkitem-ID /WorkItems?$orderby=WorkItemId
Werkpunt-ID (nieuwste eerst) /WorkItems?$orderby=WorkItemId desc
Type werkitem, dan status /WorkItems?$orderby=WorkItemType,State

AI gebruiken om OData-query's te bouwen

Als u de Azure DevOps MCP-server configureert, kunt u AI-assistenten gebruiken om OData-query's samen te stellen en problemen op te lossen.

Voorbeelden van aanwijzingen

Opdracht Voorbeeldprompt
Een query maken Write an OData query that returns all active bugs with their area path and assigned-to fields in <Contoso> project
Filteren op datum Create an OData query that returns work items created in the last 30 days in <Contoso> project
Navigatie-eigenschappen uitvouwen Write an OData query that expands the iteration path and area path for user stories in <Contoso> project
Fouten opsporen in een query My OData query returns no results — help me troubleshoot the filter clause and URL format for <Contoso> project
Genest uitvouwen Write an OData query with nested expand to return work items with their parent details in <Contoso> project
Resultaten sorteren en beperken Create an OData query that returns the 20 most recently changed bugs ordered by changed date in <Contoso> project
Aantal per werkitemtype Write an OData query that counts work items grouped by work item type for <Contoso> project
Filteren met tekenreeksfuncties Create an OData query that returns work items whose title contains "login" in <Contoso> project
Selectie, filter en uitvouwen combineren 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

Volgende stap