Exempelrapport för sammanslagning av funktionsförlopp

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

Den här artikeln visar hur du skapar en staplad stapelrapport för att visa förloppet för funktioner baserat på slutförda underordnade användarberättelser. Rapporten visar procentandelen slutförd genom sammanslagning av Story Points för en viss uppsättning aktiva funktioner. Ett exempel visas i följande bild.

Skärmbild av rapporten med staplade stapeldiagram med funktionsstatus.

Du kan visa liknande förloppsstapeldiagram från kvarvarande uppgifter genom att lägga till en sammanslagningskolumn. Mer information finns i Visa sammanslagningsförlopp eller summor.

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

Funktionsstatus frågar entiteten WorkItems för att hämta det aktuella status för förloppet.

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.

Granska funktionsförloppet baserat på en 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 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Descendants/any()"
            &"&$select=WorkItemId,Title,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(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 funktioner som har markerats som Klipp ut.

and startswith(Area/AreaPath,'{areapath}')

Returnera arbetsobjekt under en specifik områdessökväg. Ersätta med 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()

Filtrera bort alla arbetsobjekt som har minst en eller "alla" underordnade objekt. Innehåller alla funktioner med minst ett underordnat arbetsobjekt. Om du vill hämta alla arbetsobjekt med sina underordnade, även om de inte har några, kör du en fråga utan Descendants/any() filtret. Om du vill utelämna funktioner som inte har underordnade användarberättelser ersätter du med any(d:d/WorkItemType eq 'User Story').

För alla arbetsobjekt med och utan underordnade objekt:

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

För alla arbetsobjekt med minst en underordnad:

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

Välj egenskaper som ska returneras.

&$expand=Descendants(

Start av expanderingssatsen Descendants

$apply=filter(WorkItemType eq 'User Story')

Filtrera underordnade. Inkludera endast användarberättelser (utelämna uppgifter och buggar).

/groupby((StateCategory),

aggregate(StoryPoints with sum as TotalStoryPoints))

Sammanställd summa av berättelsepunkter.

)

Stäng-satsen Descendants() .

Granska funktionsframstatus för ett team

Följande fråga är densamma som den som används ovan, förutom att den filtreras efter teamnamn 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=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Transformera data i Power Query-redigeraren

Frågan returnerar flera kolumner som du behöver expandera innan du kan använda dem för att skapa en rapport. En entitet som hämtas med hjälp av en OData -$expand-instruktion returnerar en post med potentiellt flera fält. Expandera posten för att platta ut entiteten till dess fält.

För rapporten Funktionsstatus måste du utföra följande transformeringar:

  • Descendants Expandera kolumnen i två kolumner: Descendants.StateCategory ochDescendants.TotalStoryPoints
  • Tillämpa pivottabellkolumntransformeringDescendants.StateCategory kolumn för att avgränsa enskilda tillståndskategorier
  • Ersätt null-värden i alla pivoterade kolumner.
  • Lägg till en anpassad kolumn för att representera procent färdigt. Den anpassade kolumnen visar fel om det finns null-kolumner i de pivoterade state-kolumnerna .

Mer information finns i följande avsnitt i Transformera analysdata för att generera Power BI-rapporter:

Kommentar

I det här exemplet inkluderar delstatsvärdena för Användarberättelse Föreslaget, Pågår och Slutfört.

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 startmenyn för att spara frågan och återgå till fliken Rapport i Power BI.

Skärmbild av alternativet stäng och tillämpa Power Query-redigeraren.

Skapa den staplade stapeldiagramrapporten

  1. I Power BI väljer du Staplad stapeldiagramrapport under Visualiseringar.

    Skärmbild av power BI-visualiseringar och fältval för stapeldiagramrapport med funktionsstatus.

  2. Lägg till Title i Y-axeln.

  3. Lägg till PercentComplete i X-axel, högerklicka och välj Summa.

Exempelrapporten visas.

Skärmbild av rapporten exempel på funktionsstatusstaplat stapeldiagram.