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 může způsobit ztrátu dat a nejde je vrátit zpět. Například grafy burndownu nebo burnup widgetů, burndown sprintu a grafy rychlosti pro týmy, jejichž cesty oblasti se mění, nebudou odrážet správná data. Grafy historických trendů odkazují na cestu oblasti a cestu iterace definované v bodě v minulosti pro každou pracovní položku. Když se odstraní cesta k oblasti nebo cesta iterace, historická data pro ni nelze načíst.

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

Poznámka:

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

Požadavky

  • Pokud chcete zobrazit data Analýzy a dotazovat se na službu, musíte být členem projektu se základním přístupem nebo novějším. Ve výchozím nastavení mají všichni členové projektu udělená oprávnění k dotazování analýzy a definování zobrazení Analýzy.
  • 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

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu 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.

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu 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.

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu 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

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu 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žítdotaz 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