Delen via


Trendgegevens opvragen

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

Het onderzoeken van trends in gegevens en het maken van vergelijkingen tussen perioden zijn belangrijke aspecten van rapportage en gegevensanalyse. Analytics ondersteunt deze mogelijkheden.

Notitie

De Analytics-service wordt automatisch ingeschakeld en ondersteund in productie voor alle Azure DevOps-services. Power BI-integratie en -toegang tot de OData-feed van de Analytics-service zijn algemeen beschikbaar. We raden u aan deze te gebruiken en ons feedback te geven. Beschikbare gegevens zijn afhankelijk van versie. De meest recente ondersteunde versie 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. We raden u aan deze te gebruiken en ons feedback te geven. Als u een upgrade hebt uitgevoerd van Azure DevOps Server 2019, kunt u de Analytics-service installeren tijdens de upgrade.

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

Notitie

De Analytics-service is in preview voor Azure DevOps Server 2019. U kunt deze in- of installeren voor een projectverzameling. Power BI-integratie en toegang tot de OData-feed van de Analytics-service zijn in preview. We raden u aan deze te gebruiken en ons feedback te geven.

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

Trendgegevens worden weergegeven in de entiteitssets WorkItemSnapshot en WorkItemBoardSnapshot. Ze zijn zo samengesteld dat elk werkitem, vanaf de dag dat het is gemaakt tot vandaag, voor elke dag bestaat. Voor een organisatie met slechts één werkitem dat een jaar geleden is gemaakt, zijn er 365 rijen in deze entiteit. Voor grote projecten zijn deze entiteiten niet praktisch te gebruiken met clienthulpprogramma's.

Wat is de oplossing? Gebruik de aggregatie-extensies.

In dit artikel leert u het volgende:

  • Een eenvoudige query maken voor trendgegevens

Met behulp van de OData-aggregatie-extensies kunt u geaggregeerde gegevens retourneren uit Azure DevOps die tot rapportage leiden. U kunt bijvoorbeeld de fouttrend voor de maand maart weergeven. Bugtrends zijn een veelvoorkomend en essentieel onderdeel van het beheren van elk project, zodat u het direct kunt gebruiken.

Notitie

De voorbeelden die in dit document worden weergegeven, zijn gebaseerd op een URL van Azure DevOps Services. U moet de URL van uw Azure DevOps Server vervangen.

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

Een eenvoudige query maken voor trendgegevens

Er zijn enkele basisvereisten die u nodig hebt om effectief een query uit te voeren op de WorkItemSnapshot-tabel:

  • Filter de gegevens op datum.
  • De aggregatie moet worden gegroepeerd op ten minste de datum. Als dat niet het probleem is, krijgt het antwoord een waarschuwing.

De query voor het maken van een foutentrendrapport ziet er als volgt uit:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue,State), aggregate($count as Count))
  &$orderby=DateValue

Het retourneert een resultaat dat lijkt op het volgende voorbeeld:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 2666
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 51408
    }
  ]
}

Deze query produceert maximaal 31 * (number of bug states). De standaardfout heeft drie statussen:

  • Actieve
  • Opgelost
  • Gesloten

Deze query retourneert maximaal 93 rijen, ongeacht hoeveel duizenden records er daadwerkelijk bestaan. Het biedt een veel compactere vorm van het retourneren van gegevens.

Laten we eens kijken naar een variatie in dit voorbeeld. U wilt de fouttrend voor een iteratie of een release zien die begint met één iteratie en eindigt met een andere.

Voer het volgende voorbeeld uit om die query te maken:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

Het retourneert een resultaat dat lijkt op het volgende voorbeeld:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 320
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 38
    }
  ]
}

In deze query zijn er twee belangrijke verschillen. We hebben een filtercomponent toegevoegd om de gegevens te filteren op een specifieke iteratie en de datums worden nu vergeleken met de begin- en einddatum van de iteratie versus een vastgelegde datum.

Notitie

Als aggregatie niet wordt gebruikt in uw query in momentopnametabellen, ziet u de waarschuwing 'De opgegeven query bevat geen $select of $apply component die wordt aanbevolen voor alle query's.' in het antwoord.