Ukázková sestava souhrnu průběhu funkcí
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
V tomto článku se dozvíte, jak vytvořit sestavu skládaného pruhu pro zobrazení průběhu funkcí na základě dokončených podřízených uživatelských scénářů. Sestava zobrazí procento dokončení souhrnem bodů obsahu pro danou sadu aktivních funkcí. Příklad je znázorněn na následujícím obrázku.
Podobné pruhové grafy průběhu můžete zobrazit z backlogu přidáním souhrnného sloupce. Postup najdete v tématu Zobrazení průběhu souhrnu nebo součtů.
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
Průběh funkce dotazuje entitu WorkItems
, aby získala aktuální stav průběhu.
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 EntitySet
EntityType
. 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í EntityType
hodnotu .
Kontrola průběhu funkce na základě 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/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
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}
.
{organization}
– Název vaší organizace{project}
- Název projektu vašeho týmu nebo zcela vynechá/{project}
pro dotaz mezi projekty{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
$filter=WorkItemType eq 'Feature'
Návratové funkce
and State ne 'Cut'
Vynechání funkcí označených jako Vyjmout
and startswith(Area/AreaPath,'{areapath}')
Vrátí pracovní položky pod konkrétní cestou oblasti. Nahrazení vrátí Area/AreaPath eq '{areapath}'
položky v určité cestě oblasti.
Chcete-li filtrovat podle názvu týmu, použijte příkaz Teams/any(x:x/TeamName eq '{teamname})'
filtru .
and Descendants/any()
Vyfiltrujte všechny pracovní položky, které mají alespoň jednoho nebo "libovolného" potomka. Zahrnuje všechny funkce s alespoň jednou podřízenou pracovní položkou. Pokud chcete získat všechny pracovní položky se svými potomky, i když žádné nemají, spusťte dotaz bez Descendants/any()
filtru. Pokud chcete vynechat funkce, které nemají podřízené uživatelské scénáře, nahraďte textem any(d:d/WorkItemType eq 'User Story')
.
Pro všechny pracovní položky s následníky a bez jejich následníků:
$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)
Pro všechny pracovní položky s alespoň jedním následníkem:
$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)
&$select=WorkItemId, Title, WorkItemType, State
Vyberte vlastnosti, které chcete vrátit.
&$expand=Descendants(
Začátek klauzule expand Descendants
$apply=filter(WorkItemType eq 'User Story')
Vyfiltrujte potomky. Zahrnout pouze uživatelské scénáře (vynechat úkoly a chyby).
/groupby((StateCategory),
Seskupte souhrn podle StateCategory. 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.
aggregate(StoryPoints with sum as TotalStoryPoints))
Agregovaný součet bodů obsahu
)
Klauzule Close Descendants()
Kontrola průběhu funkcí pro tým
Následující dotaz je stejný jako výše použitý dotaz s tím rozdílem, že filtruje podle názvu týmu místo cesty k 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/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
Transformace dat v Editor Power Query
Dotaz vrátí několik sloupců, které je potřeba rozbalit, abyste je mohli použít k vytvoření sestavy. Jakákoli entita načítaná pomocí příkazu $expand OData vrátí záznam s potenciálně několika poli. Rozbalte záznam, aby se entita zploštěla do jejích polí.
Pro sestavu průběhu funkcí budete muset provést následující transformace:
Descendants
Rozbalte sloupec do dvou sloupců:Descendants.StateCategory
Descendants.TotalStoryPoints
- Použití transformace kontingenčního sloupce u
Descendants.StateCategory
sloupce k oddělení jednotlivých kategorií států - Nahraďte hodnoty null ve všech kontingenčních sloupcích.
- Přidejte vlastní sloupec, který představuje procento dokončení. Vlastní sloupec zobrazí chyby, pokud jsou ve sloupcích kontingenčního stavu nějaké sloupce null.
Postup najdete v následujících částech v tématu Transformace analytických dat pro generování sestav Power BI:
- Rozbalit sloupec Potomci
- Sloupec Pivot Descendants.StateCategory
- Nahraďte hodnoty null.
- Vytvoření procenta dokončeného počítaného sloupce
Poznámka:
V tomto příkladu hodnoty State pro user Story zahrnují Navrhované, Probíhá a Dokončeno.
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.
Vytvoření sestavy skládaného pruhového grafu
V Power BI zvolte sestavu skládaného pruhového grafu v části Vizualizace.
Přidat
Title
na osu YPřidejte
PercentComplete
na osu X, klikněte pravým tlačítkem myši a vyberte Součet.
Zobrazí se ukázková sestava.