Rollup untergeordneter Arbeitsaufgabenwerte in übergeordneten Beispielbericht
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Rollup bietet Unterstützung zum Anzeigen einer Anzahl von Arbeitsaufgaben oder einer Summe von Story Points, Restarbeit oder einem anderen benutzerdefinierten Feld untergeordneter Elemente. Dieser Artikel enthält mehrere Beispiele zum Generieren eines tabellarischen Rollupberichts für Epics, Features oder User Stories, die untergeordnete Arbeitsaufgaben enthalten. Die folgende Abbildung zeigt ein Beispiel für das Rollup von Story Points für die übergeordneten Features.
Weitere Informationen zum Rollup und zu Optionen zum Anzeigen des Rollups finden Sie unter Anzeigen des Rollupstatus oder der Summen in Azure Boards.
Hinweis
In diesem Artikel wird davon ausgegangen, dass Sie eine Übersicht über Beispielberichte mit OData-Abfragen lesen und ein grundlegendes Verständnis von Power BI haben.
Voraussetzungen
- Access: Mitglied eines Projekts mit mindestens standardem Zugriff sein.
- Berechtigungen: Standardmäßig verfügen Projektmitglieder über die Berechtigung zum Abfragen von Analysen und Erstellen von Ansichten.
- Weitere Informationen zu anderen Voraussetzungen für die Dienst- und Featureaktivierung sowie allgemeine Datenverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics.
Beispielabfragen
Die folgenden Abfragen geben Daten aus dem WorkItems
Entitätssatz zurück, um das Generieren von Rollupmatrixberichten zu unterstützen.
Hinweis
Informationen zum Ermitteln verfügbarer Eigenschaften für Filter- oder Berichtszwecke finden Sie unter Metadatenreferenz für Azure Boards. Sie können Ihre Abfragen filtern oder Eigenschaften zurückgeben, indem Sie einen der Werte unter oder NavigationPropertyBinding Path
EntityType
verwenden, die Property
mit einem EntitySet
verfügbar sind. Jede EntitySet
entspricht einem EntityType
. Weitere Informationen zum Datentyp der einzelnen Werte erhalten Sie in den Metadaten, die für den entsprechenden Wert EntityType
bereitgestellt werden.
Rollup Story Points to Features of child User Stories based on Area Path
Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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
Ersetzungszeichenfolgen und Abfrageaufschlüsselung
Ersetzen Sie die folgenden Zeichenfolgen durch Ihre Werte. Schließen Sie keine Klammern {} in Ihre Ersetzung ein. Wenn Ihr Organisationsname beispielsweise "Fabrikam" lautet, ersetzen Sie {organization}
durch Fabrikam
, nicht {Fabrikam}
.
{organization}
- Name Ihrer Organisation{project}
- Der Name Ihres Teamprojekts oder das vollständige Auslassen von "/{project}" für eine projektübergreifende Abfrage{areapath}
- Ihr Bereichspfad. Beispielformat:Project\Level1\Level2
.
Abfrageaufschlüsselung
In der folgenden Tabelle werden die einzelnen Teile der Abfrage beschrieben.
Abfrageteil
Beschreibung
$filter=WorkItemType eq 'Feature'
Gibt Features zurück.
and State ne 'Cut'
Lassen Sie geschlossene Fehler aus.
and startswith(Area/AreaPath,'{areapath}')
Zurückgeben von Arbeitsaufgaben unter einem bestimmten Bereichspfad durch Ersetzen Area/AreaPath eq '{areapath}'
von Elementen in einem bestimmten Bereichspfad.
Verwenden Sie die Filteranweisung Teams/any(x:x/TeamName eq '{teamname})'
, um nach Teamname zu filtern.
and Descendants/any()
Schließen Sie alle Features ein, auch die Features ohne Benutzergeschichten. Ersetzen Sie "any(d:d/WorkItemType eq 'User Story')", um Features auszulassen, die keine untergeordneten Benutzergeschichten enthalten.
&$select=WorkItemId, Title, WorkItemType, State
Wählen Sie felder aus, die zurückgegeben werden sollen.
&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),
Select expandable property fields AssignedTo
, Iteration
, Area
.
Descendants(
Erweitern Sie die Descendants
Klausel.
$apply=filter(WorkItemType eq 'User Story')
Filtern Sie die Nachfolger, um nur Benutzergeschichten einzuschließen (ohne Aufgaben und Fehler).
/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)
Zählen Sie für alle Nachfolger, die der Filterklausel entsprechen, und summieren Sie die StoryPoints
Eigenschaft.
)
Schließen Sie Descendants()
.
Rollup Story Points to Features of child User Stories based on Teams
Die folgenden Abfragen zeigen, wie Rollupberichte nach Teamnamen und nicht nach Bereichspfad gefiltert werden.
Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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 Points to Epics
Mithilfe der folgenden Abfragen können Sie Rollup-Storys auf Epics verweisen.
Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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
Rollup-Vorgänge verbleibende Arbeit und abgeschlossene Arbeit für Benutzergeschichten
Die folgende Abfrage zeigt, wie Das Rollup verbleibender Arbeit und abgeschlossener Arbeit , die untergeordneten Aufgaben zu Benutzergeschichten in der Hierarchie zugewiesen ist. Bei diesen Abfragen wird davon ausgegangen, dass Aufgaben als untergeordnete Elemente eines Benutzerabschnitts im angegebenen Bereichspfad zugewiesen werden.
Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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
Anzahl der Rollupfehler für Features
Die folgenden Abfragen zeigen, wie sie die Anzahl der Features zugewiesenen Fehler rollup. Bei diesen Abfragen wird davon ausgegangen, dass Fehler als untergeordnete Elemente eines Features im angegebenen Bereichspfad definiert sind.
Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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
(Optional) Abfrage umbenennen
Sie können die Standardabfragebezeichnung Query1 in aussagekräftiger umbenennen. Geben Sie einfach im Bereich Abfrageeinstellungen einen neuen Namen ein.
Erweitern von Spalten in Power BI
Die &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath)
Klausel gibt Datensätze zurück, die mehrere Felder enthalten. Vor dem Erstellen des Berichts müssen Sie den Datensatz erweitern, um ihn in bestimmte Felder zu reduzieren. In diesem Fall sollten Sie die folgenden Datensätze erweitern:
AssignedTo
AreaPath
IterationPath
Informationen dazu finden Sie unter Transform Analytics-Daten zum Generieren von Power BI-Berichten.
(Optional) Umbenennen von Feldern
Nachdem Sie die Spalten erweitert haben, können Sie ein oder mehrere Felder umbenennen. Sie können z. B. die Spalte AreaPath
umbenennen in Area Path
. Informationen dazu finden Sie unter Umbenennen von Spaltenfeldern.
Ersetzen von Nullwerten in Rollupfeldern
Wenn für eine Arbeitsaufgabe keine untergeordneten Elemente vorhanden sind, kann der Rollupwert null sein. Beispiel: Descendants.CountOfUserStories ist "null", wenn ein Feature keine untergeordneten Benutzergeschichten enthält.
Um die Berichterstellung zu vereinfachen, ersetzen Sie alle NULL-Werte durch Null, indem Sie die folgenden Schritte ausführen.
- Wählen Sie die Spalte aus, indem Sie auf die Spaltenüberschrift klicken.
- Wählen Sie das Menü "Transformieren" aus.
- Wählen Sie "Werte ersetzen" aus. Das Dialogfeld "Werte ersetzen" wird angezeigt.
- Geben Sie "null" in "Wert" ein , um zu suchen.
- Geben Sie "0" in "Ersetzen durch" ein.
- Wählen Sie OK aus.
Wiederholen Sie diesen Vorgang für alle Rollupspalten.
Schließen Sie die Abfrage, und wenden Sie Ihre Änderungen an.
Nachdem Sie alle Datentransformationen abgeschlossen haben, wählen Sie "Schließen" und "Übernehmen " im Menü "Start " aus, um die Abfrage zu speichern und zur Registerkarte "Bericht " in Power BI zurückzukehren.
Erstellen des Tabellenberichts
Wählen Sie in Power BI den Tabellenbericht unter "Visualisierungen" aus.
Fügen Sie die folgenden Felder in der angegebenen Reihenfolge zu Spalten hinzu:
WorkItemI
, wählen Sie "Nicht zusammenfassen" aus, um bei Bedarf die ID anzuzeigen.WorkItemType
Title
State
Count of User Stories
Total Story Points
.
Der Beispielbericht wird angezeigt.
Verwandte Artikel
- Erkunden von Beispielberichten mithilfe von OData-Abfragen
- Erstellen von OData-Abfragen für Analytics
- Herstellen einer Verbindung mit Power BI mithilfe von OData-Abfragen
- Informationen zu Metadaten für Azure Boards Analytics
- Access-Beispielberichte und Kurzübersichtsindex
- Hinzufügen eines Teamdatenschnitts zu einem vorhandenen Bericht