Sdílet prostřednictvím


Ukázkové sestavy burndownu sprintu

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

Grafy burndownu sprintu jsou užitečné k monitorování toho, jak dobře tým provádí plán sprintu. Několik předdefinovaných grafů a widgetů řídicích panelů podporuje monitorování burndownu sprintu. Viz Konfigurace a monitorování burndownu sprintu.

Graf burndownu sprintu ale můžete přizpůsobit pomocí analýz a Power BI pomocí dotazů uvedených v tomto článku. Následující příklad ukazuje burndown uživatelských scénářů a jejich stavů.

Snímek obrazovky se sestavou skupinového sloupcového grafu ve službě Power BI Sprint

Důležité

  • Odstranění cest oblasti nebo změna konfigurace cest iterace způsobí nevratnou ztrátu dat. Například grafy burndownu a burnup widgetů, sprint burndown a grafy rychlosti pro týmy se změněnými cestami oblastí nezobrazují přesná data. Historické grafy trendu odkazují na cestu oblasti a cestu iterace, protože byly definovány v době pro každou pracovní položku. Po odstranění nemůžete načíst historická data pro tyto cesty.
  • Můžete odstranit pouze oblasti a iterační cesty, které už nejsou používány žádnými pracovními položkami.

Další informace o burndownu a burnupu a pokyny ke burndownu a burnupu.

Poznámka:

Tento článek předpokládá, že si přečtete přehled ukázkových sestav pomocí dotazů OData a máte základní znalosti o Power BI.

Požadavky

  • Přístup: Buďte členem projektu s alespoň základním přístupem.
  • Oprávnění: Ve výchozím nastavení mají členové projektu oprávnění k dotazování na Analýzy a vytváření zobrazení.
  • Další informace o dalších požadavcích týkajících se povolení služeb a funkcí a obecných aktivit sledování dat najdete v tématu Oprávnění a požadavky pro přístup k Analýzám.

Vzorové dotazy

Grafy burndownu vyžadují dotazování WorkItemSnapshot sady entit pro získání historických dat.

Poznámka:

Informace o dostupných vlastnostech pro účely filtru nebo sestavy najdete v referenčních informacích k metadatům pro Azure Boards. Dotazy můžete filtrovat nebo vracet vlastnosti pomocí libovolné hodnoty Property pod hodnotami nebo NavigationPropertyBinding Path hodnotami dostupnými v objektu EntitySetEntityType . Každý EntitySet odpovídá hodnotě EntityType. Další informace o datovém typu každé hodnoty najdete v metadatech zadaných pro odpovídající EntityTypehodnotu .

Burndown User Stories for an area path and the current iteration

Zkopírujte a vložte následující dotaz Power BI přímo do okna Získat>prázdné dotazy . Další informace najdete v tématu Přehled ukázkových sestav pomocí dotazů OData.

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

Náhradní řetězce a rozpis dotazů

Nahraďte následující řetězce hodnotami. Nezahrnujte do náhradních závorek {} . Pokud je například název vaší organizace "Fabrikam", nahraďte {organization} ho Fabrikam, nikoli {Fabrikam}.

  • {areapath} - Cesta k vaší oblasti. Příklad formátu: Project\Level1\Level2.

Rozpis dotazů

Následující tabulka popisuje jednotlivé části dotazu.

Část dotazování

Popis


$apply=filter(

Spustit filtr()

WorkItemType eq 'User Story'

Burndown on User Stories

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

Pracovní položky v určité cestě oblasti Nahrazení vrátí Area/AreaPath eq '{areapath}' položky v určité cestě oblasti.

Pokud chcete filtrovat podle názvu týmu, použijte příkaz filtru. Teams/any(x:x/TeamName eq '{teamname})'

and StateCategory ne 'Completed'

Vyfiltruje dokončené položky. Další informace o kategoriích stavů najdete v tématu Jak se v backlogech a panelech používají stavy a kategorie stavů pracovního postupu.

and DateValue ge Iteration/StartDate

Začněte trend na začátku iterace.

and DateValue le Iteration/EndDate

Koncový trend na konci iterace

and Iteration/StartDate le now()

Vyberte aktuální iteraci.

and Iteration/EndDate ge now()

Výběr aktuální iterace

)

Zavřít filtr()

/groupby(

Zahájení seskupby()

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

Seskupit podle hodnoty DateValue (používá se k trendu) a všechna pole, na které chcete sestavovat

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

Agregace podle počtu uživatelských scénářů a součtu bodů obsahu

)

Zavřít groupby()

Burndown User Stories for a current iteration

Tento dotaz je stejný jako výše použitý dotaz s tím rozdílem, že filtruje podle názvu týmu místo cesty oblasti.

Zkopírujte a vložte následující dotaz Power BI přímo do okna Získat>prázdné dotazy . Další informace najdete v tématu Přehled ukázkových sestav pomocí dotazů OData.

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 for all sprints since the start of a year

Možná budete chtít zobrazit burndown všech sprintů v jedné sestavě. Tyto dotazy načítají burndowny sprintů a jejich body podle scénářů pro všechny sprinty od začátku roku 2022.

Zkopírujte a vložte následující dotaz Power BI přímo do okna Získat>prázdné dotazy . Další informace najdete v tématu Přehled ukázkových sestav pomocí dotazů OData.

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

Úkoly burndownu a zbývající práce

Zkopírujte a vložte následující dotaz Power BI přímo do okna Získat>prázdné dotazy . Další informace najdete v tématu Přehled ukázkových sestav pomocí dotazů OData.

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

(Volitelné) Přejmenování dotazu

Výchozí popisek dotazu , Query1, můžete přejmenovat na něco smysluplnějšího. Jednoduše zadejte nový název z podokna Nastavení dotazu.

Snímek obrazovky s možnostmi nabídky dotazu Power BI a přejmenování dotazu

Rozbalení sloupců v Editor Power Query

Před vytvořením sestavy budete muset rozbalit sloupce, které vracejí záznamy obsahující několik polí. V tomto případě budete chtít rozbalit následující záznamy:

  • Area
  • Iteration
  • AssignedTo

Informace o tom, jak rozbalit pracovní položky, najdete v tématu Transformace analytických dat pro generování sestav Power BI.

Zavřete dotaz a použijte změny.

Jakmile dokončíte všechny transformace dat, v nabídce Domů zvolte Zavřít a použít dotaz a vraťte se na kartu Sestava v Power BI.

Snímek obrazovky s možností Zavřít a Použít Editor Power Query

Vytvoření sestavy skládaného sloupcového grafu

  1. V Power BI zvolte sestavu skládaného sloupcového grafu v části Vizualizace.

    Snímek obrazovky s výběrem vizualizací a polí Power BI pro sestavu Sprint Burndown

  2. Přidat DateValue na osu X, kliknout pravým tlačítkem myši a vybrat DateValuemístoDate Hierarchy

  3. Přidat Count na osu Y

  4. Přidat State na osu Y

Ukázková sestava, která zobrazuje burndown na story points i count of Stories.

Snímek obrazovky se sestavou skupinového sloupcového grafu ukázkového sprintu Power BI Sprint