Share via


Gegevens voor het bijhouden van werk aggregeren met behulp van Analytics

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

U kunt een som van uw werktraceringsgegevens op twee manieren ophalen met behulp van Analytics met OData. De eerste methode retourneert een eenvoudig aantal werkitems op basis van uw OData-query. De tweede methode retourneert een geformatteerd JSON-resultaat op basis van uw OData-query waarmee de OData-aggregatie-extensie wordt uitgevoerd.

In dit artikel wordt informatie uitgetrokken die wordt gegeven in OData-query's maken voor Analyse en Basisquery's definiëren met behulp van OData Analytics. De query's zijn dit artikel ook gericht op het ophalen van werkitemgegevens, maar de principes zijn van toepassing op het uitvoeren van query's op andere entiteitssets.

In dit artikel leert u het volgende:

  • Over de OData-aggregatie-extensie
  • De aggregatie-extensie voor OData gebruiken
  • Samengevoegde resultaten groeperen en filteren
  • Gegevens aggregeren om een cumulatief stroomdiagram te genereren

Zie Return a count of items (no other data) and Return a count of items and Return a count of items and data(return a count of items and data) (Aantal items en gegevens retourneren) voor meer informatie over het genereren van eenvoudige tellingen.

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.

Wat is de aggregatie-extensie voor OData?

Analyse is afhankelijk van OData om query's te maken over uw werktraceringsgegevens. Aggregaties in OData worden bereikt met behulp van een extensie waarmee het $apply trefwoord wordt geïntroduceerd. Hieronder ziet u enkele voorbeelden van het gebruik van dit trefwoord. Meer informatie over de extensie op OData Extension for Data Aggregation.

Gegevens aggregeren met behulp van de OData-aggregatie-extensie

Nu u hebt gezien hoe u eenvoudige tellingen kunt uitvoeren, gaan we kijken hoe u aggregaties activeert met behulp van het $apply token waarin de basisindeling aan het einde van de URL als volgt is:

/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})

Hierin:

  • {entitySetName} is de entiteit waarvoor een query moet worden uitgevoerd
  • {columnToAggregate} is de aggregatiekolom
  • {aggregationType} geeft het gebruikte type aggregatie op
  • {newColumnName} geeft de naam op van de kolom met waarden na aggregatie.

Geaggregeerde gegevens met behulp van de extensie toepassen

Met behulp van de $apply extensie kunt u tellingen, sommen en aanvullende informatie verkrijgen wanneer u uw gegevens voor het bijhouden van uw werk opvraagt.

De som van alle resterende hoeveelheid werk retourneren

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(RemainingWork with sum as SumOfRemainingWork)

De id van het laatste werkitem retourneren

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(WorkItemId with max as MaxWorkItemId)

Groepsresultaten met behulp van de groupby-component

De OData-aggregatie-extensie ondersteunt ook een groupby component die identiek is aan de SQL-component GROUP BY . U kunt deze component gebruiken om getallen in meer detail op te splitsen.

Met de volgende component wordt bijvoorbeeld het aantal werkitems geretourneerd:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate($count as Count)

Voeg de groupby component toe om een aantal werkitems per type te retourneren:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType), aggregate($count as Count))

Het retourneert een resultaat dat vergelijkbaar is met dit voorbeeld:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
    {
      "@odata.id":null,"WorkItemType":"Bug","Count":3
    },
    {
      "@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
    }
  ]
}

U kunt ook groeperen op meerdere eigenschappen, zoals in dit voorbeeld:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType, State), aggregate($count as Count))

Het retourneert een resultaat dat vergelijkbaar is met dit voorbeeld:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Bug",
      "Count": 2
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Bug",
      "Count": 1
    },
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Product Backlog Item",
      "Count": 5
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Product Backlog Item",
      "Count": 8
    }
  ]
}

U kunt ook groeperen tussen entiteiten, maar OData-groepering verschilt van de manier waarop u normaal gesproken erover denkt.

Stel dat u wilt weten hoeveel gebieden zich in elk project in een organisatie of verzameling bevinden. In OData is 'alle gebieden tellen en groeperen op project' gelijk aan 'geef me alle projecten en een aantal gebieden voor elk project'. Dit resulteert in een query die vergelijkbaar is met:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $apply=groupby((Project/ProjectName), aggregate($count as Count))

Geaggregeerde resultaten filteren

U kunt ook geaggregeerde resultaten filteren, maar deze worden iets anders toegepast dan wanneer u geen aggregatie gebruikt. Analyse evalueert filters langs een pijp, zodat het altijd het beste is om eerst het meest discrete filter uit te voeren.

Filters zien er als volgt uit:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=
    filter(Iteration/IterationName eq 'Sprint 89')/
    filter(WorkItemType eq 'User Story')/
    groupby((State), aggregate($count as Count))

Notitie

U hoeft de groupby component niet op te geven. U kunt de aggregate component gewoon gebruiken om één waarde te retourneren.

Meerdere aggregaties binnen één aanroep genereren

Mogelijk wilt u meerdere stukjes informatie opgeven. Een voorbeeld is de som van voltooid werk en afzonderlijk de som van het resterende werk. In dat geval kunt u als volgt afzonderlijke oproepen of één aanroep plaatsen:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)

Er wordt een resultaat geretourneerd dat er als volgt uitziet:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
    }
  ]
}

Berekende eigenschappen genereren voor gebruik binnen één aanroep

Mogelijk moet u een wiskundige expressie gebruiken om eigenschappen te berekenen voor gebruik in een resultatenset. Een voorbeeld is de som van voltooid werk dat wordt gedeeld door de som van voltooid werk plus de som van het resterende werk om het percentage voltooide werk te berekenen. In dat geval kunt u dit voorbeeld gebruiken:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
    }
  ]
}

Een cumulatief stroomdiagram genereren op basis van geaggregeerde gegevens

Stel dat u een cumulatief stroomdiagram wilt maken in Power BI. U kunt een query gebruiken die vergelijkbaar is met de query hieronder:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue

Het retourneert een resultaat dat vergelijkbaar is met dit voorbeeld. U kunt deze vervolgens rechtstreeks in uw gewenste gegevensvisualisatie gebruiken.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
  "value": [
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 324,
       "ColumnName": "Completed"
    },
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 5,
      "ColumnName": "In Progress"
    }
  ]
}

Laten we eens kijken wat deze query daadwerkelijk doet:

  • Hiermee filtert u de gegevens naar een specifiek team
  • Hiermee filtert u de gegevens naar een specifieke achterstand
  • Retourneert een aantal werkitems.

Wanneer u Power BI of Excel vernieuwt, hoe minder rijen nodig zijn, hoe sneller de vernieuwing plaatsvindt.

Volgende stappen