Aggregera arbetsspårningsdata med analytics

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Du kan få en summa av dina arbetsspårningsdata på ett av två sätt med hjälp av Analytics med OData. Den första metoden returnerar ett enkelt antal arbetsobjekt baserat på din OData-fråga. Den andra metoden returnerar ett JSON-formaterat resultat baserat på din OData-fråga som använder OData-aggregeringstillägget.

Den här artikeln bygger vidare på information som tillhandahålls i Skapa OData-frågor för analys och Definiera grundläggande frågor med OData Analytics. Dessutom är frågorna den här artikeln inriktade på att hämta arbetsobjektdata, men principerna gäller för att fråga andra entitetsuppsättningar.

I den här artikeln får du lära dig:

  • Om OData Aggregation-tillägget
  • Så här använder du aggregeringstillägget för OData
  • Gruppera och filtrera aggregerade resultat
  • Aggregera data för att generera ett kumulativt flödesdiagram

Information om hur du genererar enkla antal finns i Returnera ett antal objekt (inga andra data) och Returnera ett antal objekt och data.

Anteckning

Analytics-tjänsten aktiveras automatiskt och stöds i produktion för alla Azure DevOps Services. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback. Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0, och den senaste förhandsversionen är v4.0-preview. Mer information finns i OData API-versionshantering.

Anteckning

Analytics-tjänsten installeras automatiskt och stöds i produktion för alla nya projektsamlingar för Azure DevOps Server 2020 och senare versioner. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback. Om du har uppgraderat från Azure DevOps Server 2019 kan du installera Analytics-tjänsten under uppgraderingen.

Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0, och den senaste förhandsversionen är v4.0-preview. Mer information finns i OData API-versionshantering.

Anteckning

Analytics-tjänsten är en förhandsversion för Azure DevOps Server 2019. Du kan aktivera eller installera den för en projektsamling. Power BI-integrering och åtkomst till OData-feeden för Analytics Service finns i förhandsversion. Vi rekommenderar att du använder den och ger oss feedback.

Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0, och den senaste förhandsversionen är v4.0-preview. Mer information finns i OData API-versionshantering.

Vad är aggregeringstillägget för OData?

Analytics förlitar sig på OData för att skapa frågor över dina arbetsspårningsdata. Sammansättningar i OData uppnås med hjälp av ett tillägg som introducerar nyckelordet $apply . Vi har några exempel på hur du använder det här nyckelordet nedan. Läs mer om tillägget i OData-tillägget för dataaggregering.

Aggregera data med OData-aggregeringstillägget

Nu när du har sett hur du gör enkla antal ska vi gå igenom hur du utlöser aggregeringar med hjälp av token $apply där det grundläggande formatet i slutet av URL:en är följande:

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

Plats:

  • {entitySetName} är den entitet som behöver efterfrågas
  • {columnToAggregate} är sammansättningskolumnen
  • {aggregationType} anger vilken typ av aggregering som används
  • {newColumnName} anger namnet på kolumnen med värden efter aggregering.

Aggregerade data med hjälp av tillämpningstillägget

Med hjälp av $apply tillägget kan du hämta antal, summor och ytterligare information när du frågar dina arbetsspårningsdata.

Returnera summan av allt återstående arbete

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

Returnera den senaste arbetsobjektidentifieraren

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

Gruppera resultat med hjälp av groupby-satsen

OData-aggregeringstillägget stöder också en groupby -sats som är identisk med SQL-satsen GROUP BY . Du kan använda den här satsen för att snabbt dela upp siffror mer detaljerat.

Till exempel returnerar thie följande sats ett antal arbetsobjekt:

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

groupby Lägg till -satsen för att returnera antalet arbetsobjekt efter typ:

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

Det returnerar ett resultat som liknar det här exemplet:

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

Du kan också gruppera efter flera egenskaper som i det här exemplet:

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

Det returnerar ett resultat som liknar det här exemplet:

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

Du kan också gruppera mellan entiteter, men OData-gruppering skiljer sig från hur du normalt kan tänka på det.

Anta till exempel att du vill veta hur många områden som finns i varje projekt i en organisation eller samling. I OData motsvarar "räkna alla områden och gruppera dem efter projekt" "ge mig alla projekt och antal områden för varje projekt". Detta resulterar i en fråga som liknar:

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

Filtrera aggregerade resultat

Du kan också filtrera aggregerade resultat, men de tillämpas något annorlunda än när du inte använder aggregering. Analytics utvärderar filter längs en pipe så det är alltid bäst att göra den mest diskreta filtreringen först.

Filter ser ut så här:

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))

Anteckning

Du behöver inte ange groupby satsen. Du kan helt enkelt använda aggregate -satsen för att returnera ett enda värde.

Generera flera aggregeringar i ett enda anrop

Du kanske vill ange flera informationsdelar. Ett exempel är summan av slutfört arbete och separat summan av återstående arbete. I så fall kan du göra separata anrop eller ett enda anrop på följande sätt:

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

Det returnerar ett resultat som ser ut så här:

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

Generera beräknade egenskaper för användning inom ett enda anrop

Du kan behöva använda ett matematiskt uttryck för att beräkna egenskaper för användning i en resultatuppsättning. Ett exempel är summan av slutfört arbete som divideras med summan av slutfört arbete plus summan av återstående arbete för att beräkna den procentandel av arbetet som har slutförts. I så fall kan du använda det här exemplet:

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

Generera ett kumulativt flödesdiagram från aggregerade data

Anta att du vill skapa ett kumulativt flödesdiagram i Power BI. Du kan använda en fråga som liknar den nedan:

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

Det returnerar ett resultat som liknar det här exemplet. Du kan sedan använda den direkt i valfri datavisualisering.

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

Låt oss ta en titt på vad den här frågan faktiskt gör:

  • Filtrerar data till ett specifikt team
  • Filtrerar data till en specifik kvarvarande datalogg
  • Returnerar antalet arbetsobjekt.

När du uppdaterar Power BI eller Excel, desto färre rader krävs, desto snabbare sker uppdateringen.

Nästa steg