Sammanslagning av underordnade arbetsobjektvärden till en överordnad exempelrapport
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Sammanslagning ger stöd för att visa antalet arbetsobjekt eller summan av artikelpunkter, återstående arbete eller annat anpassat fält med underordnade objekt. Den här artikeln innehåller flera exempel på hur du genererar en samlad tabellrapport för epos, funktioner eller användarberättelser som innehåller underordnade arbetsobjekt. Följande bild visar ett exempel på storypunkter som har rullats upp för deras överordnade funktioner.
Mer information om sammanslagning och alternativ för att visa sammanslagning finns i Visa sammanslagningsförlopp eller summor i Azure Boards.
Kommentar
Den här artikeln förutsätter att du läser Översikt över exempelrapporter med OData-frågor och har en grundläggande förståelse för Power BI.
Förutsättningar
- Åtkomst: Vara medlem i ett projekt med minst grundläggande åtkomst.
- Behörigheter: Som standard har projektmedlemmar behörighet att fråga Analytics och skapa vyer.
- Mer information om andra förutsättningar för tjänst- och funktionsaktivering och allmänna dataspårningsaktiviteter finns i Behörigheter och krav för åtkomst till analys.
Exempelfrågor
Följande frågor returnerar data från entitetsuppsättningen WorkItems
som stöder generering av sammanslagningsmatrisrapporter.
Kommentar
Information om hur du fastställer tillgängliga egenskaper för filter- eller rapportändamål finns i Metadatareferens för Azure Boards. Du kan filtrera dina frågor eller returnera egenskaper med något av värdena Property
under ett EntityType
eller NavigationPropertyBinding Path
flera värden som är tillgängliga med en EntitySet
. Var och EntitySet
en motsvarar en EntityType
. Mer information om datatypen för varje värde finns i metadata för motsvarande EntityType
.
Sammanslagningsberättelse pekar på funktioner i underordnade användarberättelser baserat på områdessökväg
Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.
let
Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Ersättningssträngar och frågeuppdelning
Ersätt följande strängar med dina värden. Ta inte med hakparenteser {} med din ersättning. Om ditt organisationsnamn till exempel är "Fabrikam" ersätter du {organization}
med Fabrikam
, inte {Fabrikam}
.
{organization}
– Organisationens namn{project}
– Namnet på ditt teamprojekt, eller utelämna "/{project}" helt, för en fråga mellan projekt{areapath}
- Din områdessökväg. Exempelformat:Project\Level1\Level2
.
Frågeuppdelning
I följande tabell beskrivs varje del av frågan.
Frågedel
Beskrivning
$filter=WorkItemType eq 'Feature'
Returnera funktioner.
and State ne 'Cut'
Utelämna stängda buggar.
and startswith(Area/AreaPath,'{areapath}')
Returnera arbetsobjekt under en specifik områdessökväg och ersätt Area/AreaPath eq '{areapath}'
returnerar objekt på en specifik områdessökväg.
Om du vill filtrera efter gruppnamn använder du filtersatsen Teams/any(x:x/TeamName eq '{teamname})'
.
and Descendants/any()
Inkludera alla funktioner, även de som saknar användarberättelser. Ersätt med "any(d:d/WorkItemType eq 'User Story')" för att utelämna funktioner som inte har underordnade användarberättelser.
&$select=WorkItemId, Title, WorkItemType, State
Välj fält som ska returneras.
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),
Välj utökningsbara egenskapsfält AssignedTo
, Iteration
, Area
.
Descendants(
Descendants
Expandera -satsen.
$apply=filter(WorkItemType eq 'User Story')
Filtrera underordnade så att de endast innehåller Användarberättelser (utelämnar uppgifter och buggar).
/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)
För alla underordnade som matchar filtersatsen räknar du dem och summerar StoryPoints
egenskapen.
)
Stäng Descendants()
.
Sammanslagningsberättelser pekar på funktioner i underordnade användarberättelser baserat på Teams
Följande frågor visar hur du genererar sammanslagningsrapporter som filtreras efter gruppnamn i stället för Områdessökväg.
Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.
let
Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Cut'"
&" and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname})"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Sammanslagningsberättelse pekar på epos
Du kan sammanslagningsberättelsen pekar på Epics med hjälp av följande frågor.
Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.
let
Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Epic'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any(d:d/WorkItemType eq 'User Story')"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate(StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Sammanslagning av återstående arbete och slutfört arbete till användarberättelser
Följande fråga visar hur du samlade återstående arbete och slutfört arbete som tilldelats underordnade aktiviteter till Användarberättelser i hierarkin. Dessa frågor förutsätter att Uppgifter tilldelas som underordnade till en användarberättelse i den angivna områdessökvägen.
Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.
let
Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'User Story'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Task')"
&"/aggregate(RemainingWork with sum as TotalRemainingWork, CompletedWork with sum as TotalCompletedWork)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Sammanslagning av buggantal till funktioner
Följande frågor visar hur du samlar antalet buggar som tilldelats funktioner. Dessa frågor förutsätter att buggar definieras som underordnade till en funktion i den angivna områdessökvägen.
Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.
let
Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Bug')"
&"/aggregate($count as CountOfBugs)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
(Valfritt) Byt namn på fråga
Du kan byta namn på standardfrågans etikett, Query1, till något mer meningsfullt. Ange bara ett nytt namn i fönstret Frågeinställningar .
Expandera kolumner i Power BI
Satsen &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)
returnerar poster som innehåller flera fält. Innan du skapar rapporten måste du expandera posten för att platta ut den till specifika fält. I det här fallet vill du expandera följande poster:
AssignedTo
AreaPath
IterationPath
Mer information finns i Transformera analysdata för att generera Power BI-rapporter.
(Valfritt) Byt namn på fält
När du har expanderat kolumnerna kanske du vill byta namn på ett eller flera fält. Du kan till exempel byta namn på kolumnen AreaPath
till Area Path
. Mer information finns i Byt namn på kolumnfält.
Ersätt null-värden i sammanslagningsfält
Om ett arbetsobjekt inte har några underordnade objekt kan sammanslagningsvärdet vara null. Till exempel är Descendants.CountOfUserStories "null" om en funktion inte har några underordnade användarberättelser.
För enklare rapportering ersätter du alla null-värden med noll genom att följa dessa steg.
- Välj kolumnen genom att klicka på kolumnrubriken.
- Välj menyn Transformera.
- Välj Ersätt värden. Dialogrutan Ersätt värden visas.
- Ange "null" i Värde för att hitta.
- Ange "0" i Ersätt med.
- Välj OK.
Upprepa för alla sammanslagningskolumner.
Stäng frågan och tillämpa ändringarna
När du har slutfört alla dina datatransformeringar väljer du Stäng och använd på startmenyn för att spara frågan och återgå till fliken Rapport i Power BI.
Skapa tabellrapporten
I Power BI väljer du tabellrapporten under Visualiseringar.
Lägg till följande fält i Kolumner i den angivna ordningen:
WorkItemI
väljer du Sammanfatta inte för att visa ID om det behövsWorkItemType
Title
State
Count of User Stories
Total Story Points
.
Exempelrapporten visas.