Werktraceringsgegevens aggregeren met behulp van Analytics

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

U kunt op twee manieren een som van uw werktraceringsgegevens verkrijgen 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 JSON-opgemaakt resultaat op basis van uw OData-query die de OData-aggregatie-extensie uitvoert.

Dit artikel bouwt voort op de informatie in OData-query's maken voor Analyse en Basisquery's definiëren met behulp van OData Analytics. De query's in dit artikel zijn 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
  • Geaggregeerde resultaten groeperen en filteren
  • Gegevens aggregeren om een cumulatief stroomdiagram te genereren

Zie Een telling van items (geen andere gegevens) retourneren en Een telling van items en gegevens retourneren voor meer informatie over het genereren van eenvoudige aantallen.

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 de versie. De meest recente ondersteunde versie is v2.0en de meest recente 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 latere 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 tijdens de upgrade installeren.

Beschikbare gegevens zijn afhankelijk van de versie. De meest recente ondersteunde versie is v2.0en de meest recente 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 functie inschakelen 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 de versie. De meest recente ondersteunde versie is v2.0en de meest recente preview-versie is v4.0-preview. Zie OData API-versiebeheer voor meer informatie.

Wat is de aggregatie-extensie voor OData?

Analytics is afhankelijk van OData om query's te maken voor 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 vindt u in OData-extensie voor gegevensaggregatie.

Gegevens aggregeren met behulp van de OData-aggregatie-extensie

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

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

Waar:

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

Geaggregeerde gegevens met behulp van de extensie apply

Met de $apply extensie kunt u aantallen, sommen en aanvullende informatie verkrijgen wanneer u een query uitvoert op uw werktraceringsgegevens.

De som van al het resterende 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)

Resultaten groeperen 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 snel gedetailleerder op te splitsen.

De volgende component retourneert bijvoorbeeld het aantal werkitems:

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

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

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

Er wordt een resultaat geretourneerd 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))

Er wordt een resultaat geretourneerd 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 hoe u er normaal over 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 mij alle projecten en een telling van 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 pipe, dus het is altijd het beste om eerst de meest discrete filters uit te voeren.

Filters zien eruit als in dit voorbeeld:

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 genereren binnen één aanroep

U kunt meerdere gegevens opgeven. Een voorbeeld is de som van voltooid werk en afzonderlijk de som van de resterende hoeveelheid werk. In een dergelijk geval kunt u als volgt afzonderlijke aanroepen of één aanroep uitvoeren:

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

Er wordt een resultaat geretourneerd dat lijkt op dit voorbeeld:

{
  "@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 die wordt gedeeld door de som van voltooid werk plus de som van de resterende hoeveelheid werk om het percentage voltooid werk te berekenen. In een dergelijk 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 lijkt op de onderstaande:

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

Er wordt een resultaat geretourneerd 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:

  • De gegevens filteren op een specifiek team
  • De gegevens filteren op een specifieke achterstand
  • Retourneert het aantal werkitems.

Bij het vernieuwen van Power BI of Excel, hoe minder rijen nodig zijn, hoe sneller de vernieuwing plaatsvindt.

Volgende stappen