Dela via


Aggregera arbetsspårningsdata med hjälp av Analys

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

Du kan aggregera arbetsspårningsdata med hjälp av Analys med OData på två sätt: använda $count för enkla summor eller använda OData-aggregeringstillägget $apply för att returnera grupperade, filtrerade och beräknade resultat som JSON.

Tips/Råd

Du kan använda AI för att hjälpa till med den här uppgiften senare i den här artikeln, eller se Aktivera AI-hjälp med Azure DevOps MCP Server för att komma igång.

Den här artikeln bygger på Skapa OData-frågor för analys och Definiera grundläggande frågor med OData Analytics. Exemplen fokuserar på arbetsobjektsdata, men samma principer gäller för andra entitetsuppsättningar. För enkla räkningsfrågor, se Hämta ett antal objekt.

Kommentar

Analytics-tjänsten aktiveras automatiskt och stöds i produktion för alla tjänster i Azure DevOps Services. Power BI-integrering och åtkomst till OData-flödet för Analytics-tjänsten är allmänt tillgängliga. Du uppmanas att använda Analytics OData-flödet och ge feedback.

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

Kommentar

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 för Analytics-tjänsten är allmänt tillgängliga. Du uppmanas att använda Analytics OData-flödet och ge feedback. Om du uppgraderar från Azure DevOps Server 2019 kan du installera Analytics-tjänsten under uppgraderingen.

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

Förutsättningar

Kategori Krav
Åtkomstnivåer - Projektmedlem.
– Minst Grundläggande åtkomst.
behörigheter Som standard har projektmedlemmar behörighet att fråga Analytics och skapa vyer. Mer information om andra krav för tjänst- och funktionsaktivering och allmänna dataspårningsaktiviteter finns i Behörigheter och krav för åtkomst till Analytics.

Om $apply aggregeringsutökning

OData tillhandahåller ett aggregeringstillägg som introducerar nyckelordet $apply för gruppering, filtrering och beräkning av aggregerade värden över dina arbetsspårningsdata. Följande avsnitt visar hur du använder $apply med aggregate, groupby, filteroch compute. Fullständig specifikation finns i OData-tillägget för dataaggregering.

Aggregera data med hjälp av $apply

Lägg till token i $apply fråge-URL:en för att utlösa aggregeringar. Den grundläggande syntaxen är:

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

Parameter Beskrivning
{entitySetName} Entiteten som ska frågas, till exempel WorkItems.
{columnToAggregate} Fältet som ska aggregeras, till exempel RemainingWork.
{aggregationType} Sammansättningsfunktionen: sum, min, max, averageeller countdistinct.
{newColumnName} Aliaset för den aggregerade resultatkolumnen.

I följande exempel visas vanliga aggregate åtgärder.

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 groupby fungerar som SQL GROUP BY – den delar upp aggregerade resultat med en eller flera egenskaper.

Räkna arbetsobjekt efter typ

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

Returnerar ett resultat som:

{
  "value": [
    { "WorkItemType": "Bug", "Count": 3 },
    { "WorkItemType": "Product Backlog Item", "Count": 13 }
  ]
}

Gruppera efter flera egenskaper

Lägg till fler egenskaper inom groupby parenteserna för att skapa finare detaljerade uppdelningar:

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

Returnerar en rad för varje unik kombination av typ och tillstånd (till exempel Bug/Active, Bug/Committed, Product Backlog Item/Active).

Gruppera mellan entiteter

Du kan gruppera mellan relaterade entiteter med hjälp av navigeringsegenskaper. Om du till exempel vill räkna områden per projekt:

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

Filtrera aggregerade resultat

Använd filter() inuti $apply för att begränsa data före eller efter aggregering. Länka flera filter med hjälp / av (pipe) och placera det mest selektiva filtret först för bästa prestanda.

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

Kommentar

Satsen groupby är valfri. Använd aggregate ensam för att returnera ett enda värde.

Aggregera flera fält i ett enda anrop

Lista flera fält i en enda aggregate sats, avgränsade med kommatecken, för att undvika extra tur och retur.

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

Returnerar:

{
  "value": [
    { "SumOfCompletedWork": 1525841.29, "SumOfRemainingWork": 73842.39 }
  ]
}

Beräkna beräknade egenskaper

Skicka aggregerade resultat till compute() för att härleda nya värden med hjälp av aritmetiska uttryck (div, , addsub, mul). I följande exempel beräknas procentandelen arbete som slutförts:

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

Returnerar:

{
  "value": [
    { "DonePercentage": 0.9676, "SumOfCompletedWork": 1514698.34, "SumOfRemainingWork": 50715.95 }
  ]
}

Skapa en fråga för kumulativt flödesdiagram

Följande fråga kombinerar filter, groupbyoch aggregate mot entitetsuppsättningen WorkItemBoardSnapshot för att skapa data för ett kumulativt flödesdiagram i Power BI eller Excel.

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

Den här frågan filtrerar till ett datumintervall och ett specifikt styrelse- och team, grupperar efter datum och brädkolumn och returnerar ett antal per grupp. Returnerar:

{
  "value": [
    { "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "Completed", "Count": 324 },
    { "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "In Progress", "Count": 5 }
  ]
}

Tips/Råd

Ju färre rader som returneras, desto snabbare uppdateras Power BI eller Excel. Använd snäva datumintervall och specifika tavla- och teamfilter för att minska antalet resultat.

Använda AI för att aggregera arbetsspårningsdata

Om du konfigurerar Azure DevOps MCP Server kan du be AI-assistenten att hämta arbetsobjektdata i realtid från din Azure DevOps-organisation och hjälpa dig att utarbeta eller felsöka analys-OData-aggregeringsfrågor $apply baserat på dessa data.

Uppgift Exempelprompt
Räkna efter stat In <OrganizationName>, draft an Analytics OData $apply query that counts work items grouped by State in <ProjectName>. Use placeholders for <ODataVersion> and any filters I need.
Räkna efter typ och tillstånd Create an Analytics OData $apply query for <OrganizationName> that groups WorkItems by WorkItemType and State and returns a count for each group in <ProjectName>.
Filtrera och aggregera sedan Write an Analytics OData query that filters WorkItems to bugs with Priority = 1 in <ProjectName>, then groups by Area/AreaPath and State and returns counts.
Summera återstående och slutfört arbete Generate an Analytics OData $apply query that filters to Iteration/IterationPath startswith '<IterationPath>' in <ProjectName>, then returns SumOfCompletedWork and SumOfRemainingWork.
Aggregera över teamen Help me create an Analytics OData $apply query for WorkItemBoardSnapshot that filters to BoardName '<BoardName>' and Team/TeamName '<TeamName>' in <ProjectName>, then groups by DateValue and ColumnName and returns Count.
Förklara varje sats Explain what each part of this $apply query does and how to adjust it for a different iteration: <ODataQueryOrUrl>.
Utföra felsökning av $apply-fel This Analytics OData query returns a 400 error. Diagnose the $apply syntax and suggest a corrected query: <ODataQueryOrUrl>.
Verifiera resultat Given this Analytics OData query for <OrganizationName>/<ProjectName>: <ODataQueryOrUrl>, tell me what columns and shape of JSON to expect back, and what common mistakes to check if results look wrong.

Tips/Råd

Om du använder Visual Studio Code är agentläget särskilt användbart när du itererar aggregeringsfrågor – förfina filter, felsöka $apply syntax och verifiera resultat.

Nästa steg