Delen via


Voorbeeldrapporten van Sprint burndown

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

Burndown-grafieken voor sprints zijn handig om te controleren hoe goed een team werkt aan hun sprintplan. Verschillende ingebouwde grafieken en dashboardwidgets bieden ondersteuning voor het bewaken van sprint burndown. Zie Burndown voor sprints configureren en bewaken.

U kunt echter een burndowndiagram voor sprints aanpassen met behulp van Analytics en Power BI met de query's in dit artikel. In het volgende voorbeeld ziet u een burndown van gebruikersverhalen en hun staten.

Schermopname van power BI Sprint burndown geclusterd kolomdiagramrapport.

Belangrijk

  • Als u gebiedspaden verwijdert of iteratiepaden opnieuw configureert, kunnen gegevens verloren gaan. In burndown- en burnupwidgetdiagrammen, sprint burndown- en snelheidsdiagrammen voor teams met gewijzigde vlakpaden worden bijvoorbeeld geen nauwkeurige gegevens weergegeven. Historische trenddiagrammen verwijzen naar het gebiedspad en iteratiepad zoals deze zijn gedefinieerd op het moment dat elk werkitem wordt gedefinieerd. Nadat u de gegevens hebt verwijderd, kunt u geen historische gegevens voor deze paden ophalen.
  • U kunt alleen gebieds- en iteratiepaden verwijderen die niet meer worden gebruikt door werkitems.

Voor meer informatie over burndown en burnup, en Burndown en burnup richtlijnen.

Notitie

In dit artikel wordt ervan uitgegaan dat u overzicht van voorbeeldrapporten leest met behulp van OData-query's en basiskennis hebt van Power BI.

Vereisten

Voorbeeldquery's

Voor burndowngrafieken moet een query worden uitgevoerd op de WorkItemSnapshot entiteit die is ingesteld om historische gegevens op te halen.

Notitie

Als u de beschikbare eigenschappen voor filter- of rapportdoeleinden wilt bepalen, raadpleegt u de naslaginformatie over metagegevens voor Azure Boards. U kunt uw query's filteren of eigenschappen retourneren met behulp van een van de Property waarden onder een EntityType of NavigationPropertyBinding Path waarden die beschikbaar zijn met een EntitySet. Elk EntitySet komt overeen met een EntityType. Raadpleeg voor meer informatie over het gegevenstype van elke waarde de metagegevens die voor de bijbehorende EntityTypewaarde zijn opgegeven.

Burndown-gebruikersverhalen voor een gebiedspad en de huidige iteratie

Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Uitsplitsing van tekenreeksen en query's vervangen

Vervang de volgende tekenreeksen door uw waarden. Neem geen vierkante haken {} op bij uw vervanging. Als de naam van uw organisatie bijvoorbeeld Fabrikam is, vervangt u door {organization} Fabrikam, niet {Fabrikam}.

  • {areapath} - Uw gebiedspad. Voorbeeldindeling: Project\Level1\Level2.

Uitsplitsing van query's

In de volgende tabel wordt elk deel van de query beschreven.

Queryonderdeel

Beschrijving


$apply=filter(

Filter starten()

WorkItemType eq 'User Story'

Burndown op gebruikersverhalen

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

Werkitems onder een specifiek gebiedspad. Vervangen door Area/AreaPath eq '{areapath}' retourneert items in een specifiek gebiedspad.

Als u wilt filteren op teamnaam, gebruikt u de filterinstructie Teams/any(x:x/TeamName eq '{teamname})'

and StateCategory ne 'Completed'

Hiermee worden items gefilterd die zijn voltooid. Zie Hoe werkstroomstatussen en statuscategorieën worden gebruikt in achterstanden en borden voor meer informatie over statuscategorieën.

and DateValue ge Iteration/StartDate

Begin de trend bij het starten van iteratie.

and DateValue le Iteration/EndDate

Eindtrend bij iteratie.

and Iteration/StartDate le now()

Selecteer de huidige iteratie.

and Iteration/EndDate ge now()

Huidige iteratie selecteren

)

Filter sluiten()

/groupby(

Start groupby()

(DateValue, State, WorkItemType, Priority, Area/AreaPath, Iteration/IterationPath),

Groeperen op DateValue (gebruikt voor trending) en eventuele velden waarop u wilt rapporteren

aggregate($count as Count, StoryPoints with sum as TotalStoryPoints)

Aggregeren op aantal gebruikersverhalen en som van verhaalpunten

)

Close groupby()

Burndown User Stories voor een team en de huidige iteratie

Deze query is hetzelfde als de query die hierboven wordt gebruikt, behalve dat deze filtert op teamnaam in plaats van op gebiedspad.

Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"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 StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
        &") "
        &"/groupby( "
            &"(DateValue,State,WorkItemType,Priority,Area/AreaPath,Iteration/IterationPath), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndown User Stories voor alle sprints sinds het begin van een jaar

U kunt een burndown van alle sprints in één rapport bekijken. Deze query's halen burndowns en hun verhaalpunten op voor alle sprints sinds begin 2022.

Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"WorkItemType eq 'User Story' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate ge 2022-01-01Z "
        &") "
        &"/groupby( "
            &"(DateValue,Iteration/EndDate,Area/AreaPath,Iteration/IterationPath,State,WorkItemType,Priority,AreaSK), "
            &"aggregate($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndowntaken en resterend werk

Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.

Doc-ready Power BI Query (anonomized)
let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot? "
        &"$apply=filter( "
            &"startswith(Area/AreaPath,'{project}') "
            &"and StateCategory ne 'Completed' "
            &"and DateValue ge Iteration/StartDate "
            &"and DateValue le Iteration/EndDate "
            &"and Iteration/StartDate le now()  "
            &"and Iteration/EndDate ge now() "
            &"and WorkItemType eq 'Task' "
        &") "
            &"/groupby( "
            &"(DateValue,State,WorkItemType,Activity,Priority,Area/AreaPath,Iteration/IterationPath,AreaSK), "
            &"aggregate($count as Count, RemainingWork with sum as TotalRemainingWork) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

(Optioneel) Naam van query wijzigen

U kunt de naam van het standaardquerylabel Query1 wijzigen in iets zinvoller. Voer gewoon een nieuwe naam in het deelvenster Queryinstellingen in.

Schermopname van menuopties voor Power BI-query's, naam van query wijzigen.

Kolommen uitvouwen in Power Query-editor

Voordat u het rapport maakt, moet u kolommen uitvouwen die records met verschillende velden retourneren. In dit geval wilt u de volgende records uitbreiden:

  • Area
  • Iteration
  • AssignedTo

Zie Transform Analytics-gegevens voor het genereren van Power BI-rapporten voor meer informatie over het uitvouwen van werkitems.

Sluit de query en pas uw wijzigingen toe

Zodra u al uw gegevenstransformaties hebt voltooid, kiest u Sluiten en toepassen in het menu Start om de query op te slaan en terug te keren naar het tabblad Rapport in Power BI.

Schermopname van Power Query-editor optie Sluiten en toepassen.

Het gestapelde kolomdiagramrapport maken

  1. Kies in Power BI het rapport Gestapeld kolomdiagram onder Visualisaties.

    Schermopname van Power BI-visualisaties en -veldenselecties voor Sprint Burndown-rapport.

  2. Toevoegen DateValue aan X-as, met de rechtermuisknop klikken en selecteren DateValuein plaats van Date Hierarchy

  3. Toevoegen Count aan Y-as.

  4. Toevoegen State aan Y-as.

Het voorbeeldrapport, waarin burndown wordt weergegeven op zowel Story Points als Count of Stories.

Schermopname van power BI Sprint-voorbeeldrapport met geclusterde kolomdiagrammen.