Waarden van onderliggende werkitems samenvouwen naar bovenliggend voorbeeldrapport
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Samenvouwen biedt ondersteuning voor het weergeven van het aantal werkitems of de som van verhaalpunten, resterende hoeveelheid werk of een ander aangepast veld van onderliggende items. Dit artikel bevat verschillende voorbeelden van het genereren van een tabellair rollup-rapport voor Epics, Functies of Gebruikersverhalen die onderliggende werkitems bevatten. In de volgende afbeelding ziet u een voorbeeld van verhaalpunten die zijn samengeteld voor de bovenliggende functies.
Zie Voortgang van samenvouwen of totalen weergeven in Azure Boards voor meer informatie over samenvouwen en opties om samenvouwen weer te geven.
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
- Toegang: Wees lid van een project met ten minste basistoegang .
- Machtigingen: projectleden zijn standaard gemachtigd om query's uit te voeren op Analytics en weergaven te maken.
- Zie Machtigingen en vereisten voor toegang tot Analyse voor meer informatie over andere vereisten met betrekking tot het inschakelen van services en functies en algemene activiteiten voor het bijhouden van gegevens.
Voorbeeldquery's
De volgende query's retourneren gegevens van de WorkItems
entiteitsset ter ondersteuning van het genereren van samengetelde matrixrapporten.
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 EntityType
waarde zijn opgegeven.
Samengevouwen verhaal verwijst naar functies van onderliggende gebruikersverhalen op basis van 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/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, 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}
.
{organization}
- Naam van uw organisatie{project}
- De naam van uw teamproject of laat '/{project}' volledig weg voor een query voor meerdere projecten{areapath}
- Uw gebiedspad. Voorbeeldindeling:Project\Level1\Level2
.
Uitsplitsing van query's
In de volgende tabel wordt elk deel van de query beschreven.
Queryonderdeel
Beschrijving
$filter=WorkItemType eq 'Feature'
Functies retourneren.
and State ne 'Cut'
Laat gesloten bugs weg.
and startswith(Area/AreaPath,'{areapath}')
Retourneer werkitems onder een specifiek gebiedspad, waarbij items worden vervangen Area/AreaPath eq '{areapath}'
door een specifiek gebiedspad.
Als u wilt filteren op teamnaam, gebruikt u de filterinstructie Teams/any(x:x/TeamName eq '{teamname})'
.
and Descendants/any()
Neem alle functies op, zelfs de functies zonder gebruikersverhalen. Vervang door 'any(d:d/WorkItemType eq 'User Story')' om functies weg te laten die geen onderliggende gebruikersverhalen hebben.
&$select=WorkItemId, Title, WorkItemType, State
Selecteer velden die u wilt retourneren.
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),
Selecteer uitvouwbare eigenschapsvelden AssignedTo
, Iteration
. Area
Descendants(
Vouw de Descendants
component uit.
$apply=filter(WorkItemType eq 'User Story')
Filter de afstammelingen zodat ze alleen gebruikersverhalen bevatten (laat taken en bugs weg).
/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)
Voor alle afstammelingen die overeenkomen met de filtercomponent, telt u deze op en telt u de eigenschap op StoryPoints
.
)
Sluiten Descendants()
.
Samengevouwen verhaal verwijst naar functies van onderliggende gebruikersverhalen op basis van Teams
De volgende query's laten zien hoe u samengetelde rapporten genereert die filteren 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/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=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Rollup Story verwijst naar Epics
U kunt verhaalpunten naar Epics samenvouwen met behulp van de volgende query's.
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/WorkItems?"
&"$filter=WorkItemType eq 'Epic'"
&" and State ne 'Cut'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any(d:d/WorkItemType eq 'User Story')"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'User Story')"
&"/aggregate(StoryPoints with sum as TotalStoryPoints)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Resterende hoeveelheid werk en voltooid werk voor gebruikersverhalen
In de volgende query ziet u hoe u resterende hoeveelheid werk en voltooid werk samentelt dat is toegewezen aan onderliggende taken aan gebruikersverhalen in de hiƫrarchie. Bij deze query's wordt ervan uitgegaan dat taken worden toegewezen als onderliggende elementen van een gebruikersverhaal in het opgegeven 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/WorkItems?"
&"$filter=WorkItemType eq 'User Story'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Task')"
&"/aggregate(RemainingWork with sum as TotalRemainingWork, CompletedWork with sum as TotalCompletedWork)"
&")",
null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Aantal samengetelde fouten voor functies
De volgende query's laten zien hoe u het aantal bugs dat is toegewezen aan functies samentelt. Bij deze query's wordt ervan uitgegaan dat bugs zijn gedefinieerd als onderliggende elementen van een functie in het opgegeven 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/WorkItems?"
&"$filter=WorkItemType eq 'Feature'"
&" and State ne 'Removed'"
&" and startswith(Area/AreaPath,'{areapath}')"
&" and Descendants/any()"
&"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
&"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"
&"Descendants("
&"$apply=filter(WorkItemType eq 'Bug')"
&"/aggregate($count as CountOfBugs)"
&")",
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.
Kolommen uitvouwen in Power BI
De &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)
component retourneert records die meerdere velden bevatten. Voordat u het rapport maakt, moet u de record uitbreiden om deze af te vlakken in specifieke velden. In dit geval wilt u de volgende records uitbreiden:
AssignedTo
AreaPath
IterationPath
Zie Transform Analytics-gegevens voor het genereren van Power BI-rapporten voor meer informatie.
(Optioneel) Naam van velden wijzigen
Zodra u de kolommen hebt uitgevouwen, kunt u de naam van een of meer velden wijzigen. U kunt bijvoorbeeld de naam van de kolom AreaPath
wijzigen in Area Path
. Zie Kolomvelden een andere naam geven.
Null-waarden in samengetelde velden vervangen
Als een werkitem geen onderliggende items heeft, is de samengetelde waarde mogelijk null. Descendants.CountOfUserStories is bijvoorbeeld null als een functie geen onderliggende gebruikersverhalen heeft.
Voor eenvoudigere rapportage vervangt u alle null-waarden door nul door deze stappen uit te voeren.
- Selecteer de kolom door op de kolomkop te klikken.
- Selecteer het menu Transformeren .
- Selecteer Waarden vervangen. Het dialoogvenster Waarden vervangen wordt weergegeven.
- Voer 'null' in waarde in om te zoeken.
- Voer '0' in Vervangen door in.
- Kies OK.
Herhaal dit voor alle samengetelde kolommen.
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.
Het tabelrapport maken
Kies in Power BI het tabelrapport onder Visualisaties.
Voeg de volgende velden toe aan Kolommen in de aangegeven volgorde:
WorkItemI
, kies Niet samenvatten om de id indien nodig weer te gevenWorkItemType
Title
State
Count of User Stories
Total Story Points
.
Het voorbeeldrapport wordt weergegeven.