Rollup der Werte untergeordneter Arbeitselemente in den übergeordneten Beispielbericht liefern

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Rollup bietet Unterstützung bei der Anzeige der Anzahl der Arbeitselemente oder der Summe der Story Points, der verbleibenden Arbeit oder anderer angepasster Felder der untergeordneten Elemente. In diesem Artikel finden Sie mehrere Beispiele dafür, wie Sie einen tabellarischen Rollup-Bericht für Epics, Funktionen oder User Stories generieren können, die untergeordnete Arbeitselemente enthalten. Das folgende Image zeigt ein Beispiel für Story Points, die für ihre übergeordneten Funktionen aufgerollt wurden.

Screenshot des Rollup-Matrixberichts für Funktionen.

Weitere Informationen zum Rollup und zu Optionen zum Anzeigen des Rollups finden Sie unter Anzeigen der Rollup-Fortschritte oder Gesamtwerte in Azure Boards.

Hinweis

In diesem Artikel wird davon ausgegangen, dass Sie Overview von Beispielberichten mithilfe von OData-Abfragen lesen und ein grundlegendes Verständnis von Power BI haben.

Kategorie Anforderungen
Zugriffsebenen - Projektmitglied.
– Mindestens einfacher Zugriff.
Erlaubnisse 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ätenset zurück, um die Generierung von Rollup-Matrixberichten zu unterstützen.

Hinweis

Informationen zum Suchen verfügbarer Eigenschaften zum Filtern oder Melden finden Sie in der Metadata-Referenz für Azure Boards. Sie können Abfragen filtern oder Eigenschaften zurückgeben, indem Sie einen beliebigen Property Wert verwenden, der unter einem EntityTypeoder einem beliebigen NavigationPropertyBinding Path für ein EntitySetObjekt aufgeführten Wert definiert ist. Jede EntitySet entspricht einem EntityType, der den Datentyp für jede Eigenschaft dokumentiert.

Rollup Story Points auf Funktionen untergeordneter User Stories basierend auf dem Bereichspfad

Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. 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. Klammern nicht einschließen {} in Ihrer Ersetzung Wenn Ihr Organisationsname z. B. "Fabrikam" lautet, ersetzen Sie {organization} durch Fabrikam, nicht durch {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'

Zurückgeben von Funktionen

and State ne 'Cut'

Geschlossene Bugs ignorieren.

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

Gibt Arbeitselemente unter einem bestimmten Bereichspfad zurück. Ersetzen Sie Area/AreaPath eq '{areapath}' gibt Elemente unter einem bestimmten Bereichspfad zurück. 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 durch "any(d:d/WorkItemType eq ‚User Story‘)", um Funktionen auszuschließen, die keine untergeordneten User Stories haben.

&$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),

Wählen Sie erweiterbare Eigenschaftsfelder AssignedTo, Iteration, Area aus.

Descendants(

Erweitern Sie die Descendants Klausel.

$apply=filter(WorkItemType eq 'User Story')

Filtern Sie die Nachkommen so, dass nur Benutzer-Stories enthalten sind (Aufgaben und Fehler werden ausgelassen).

/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)

Zählen Sie alle Nachfolger, die der Filterklausel entsprechen, und summieren Sie deren StoryPoints-Eigenschaft.

)

Schließen Sie Descendants().

Rollup Story Points auf Funktionen untergeordneter User Stories auf der Basis von Teams

Die folgenden Abfragen zeigen, wie Rollup-Berichte nach Teamnamen statt nach Bereichspfad gefiltert werden.

Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. 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 von Story-Punkten auf Epics

Mit den folgenden Abfragen können Sie Story-Punkte auf Epics hochrechnen.

Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. 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 Aufgaben Restarbeit und abgeschlossene Arbeit auf Benutzergeschichten

Die folgende Abfrage zeigt, wie der Rollup für Verbleibende Arbeit und Abgeschlossene Arbeit, die untergeordneten Aufgaben zugewiesen ist, in der Hierarchie für User Stories ausgeführt wird. Diese Abfragen gehen davon aus, dass Aufgaben als untergeordnete Elemente einer User Story im angegebenen Bereichspfad zugewiesen sind.

Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. 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

Rollup Fehleranzahl zu Funktionen

Die folgenden Abfragen zeigen, wie man die Anzahl der Fehler, die Features zugewiesen sind, zusammenfasst. 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 direkt in das Fenster Get Data>Blank Query. 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 das Standardabfrage-Label Query1 in einen aussagekräftigeren Namen umbenennen. Geben Sie im Bereich "Abfrageeinstellungen " einen neuen Namen ein.

Screenshot der Optionen des Power BI-Abfragemenüs; Abfrage umbenennen.

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 Spaltenfeldern

Sie können Spaltenfelder umbenennen, um benutzerfreundlicher zu werden. Informationen dazu finden Sie unter Umbenennen von Spaltenfeldern.

Ersetzen von Nullwerten in Rollupfeldern

Wenn ein Arbeitselement keine untergeordneten Elemente hat, kann der Rollup-Wert Null sein. Beispiel: Descendants.CountOfUserStories ist "null", wenn ein Feature keine untergeordneten User Stories enthält.

Um die Berichterstellung zu vereinfachen, ersetzen Sie alle NULL-Werte durch Null, indem Sie die folgenden Schritte ausführen.

  1. Wählen Sie die Spalte aus, indem Sie die Spaltenüberschrift auswählen.
  2. Wählen Sie das Menü "Transformieren" aus.
  3. Wählen Sie "Werte ersetzen" aus. Das Dialogfeld "Werte ersetzen" wird angezeigt.
  4. Lassen Sie den Wert zum Finden unverändert auf null.
  5. Geben Sie 0 in Ersetzen durch ein.
  6. Wählen Sie OK aus.

Wiederholen Sie diesen Vorgang für alle Rollupspalten.

Schließen Sie die Abfrage, und wenden Sie Ihre Änderungen an.

Wenn Sie alle Datentransformationen abgeschlossen haben, wählen Sie Schließen & Anwenden aus dem Menü Start. Diese Aktion speichert die Abfrage und gibt Sie in Power BI zur Registerkarte Report zurück.

Screenshot der Option

Tabellenbericht erstellen

  1. Wählen Sie in Power BI den Bericht Table unter Visualizations aus.

    Screenshot der Power BI-Visualisierungen und Feldauswahlen für den Rollup-Tabellenbericht.

  2. 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.

Screenshot des Beispiels für die Funktion Rollup-Matrixbericht.