Veröffentlichen von Burndown-Beispielabfragen und -berichten

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

Burndown- und Burnupberichte zeigen, wie viel Arbeit im Laufe der Zeit abgeschlossen wird. Die folgende Abbildung zeigt den Burndown, sowohl anhand der Anzahl der Benutzergeschichten als auch der Summe von Story Points.

Screenshot des Power BI Release-Burndownberichts mit gruppierten Säulendiagrammen.

Burndowndiagramme sind nur sinnvoll, wenn Sie Ihre Arbeit für den Zeitraum des Diagramms planen. Andernfalls wird bei einer Sprint-nach-Sprint-Basis kein Standard-Burndown angezeigt. In diesen Fällen ist ein Burnupdiagramm sinnvoller, um zu sehen, wie der Fortschritt im Laufe der Zeit erfolgt.

Wichtig

  • Das Löschen von Bereichspfaden oder das Neukonfigurieren von Iterationspfaden verursacht einen unwiderruflichen Datenverlust. Beispielsweise werden Burndown- und Burnup-Widgetdiagramme, Sprint-Burndown- und Geschwindigkeitsdiagramme für Teams mit geänderten Flächenpfaden keine genauen Daten angezeigt. Historische Trenddiagramme verweisen auf den Bereichspfad und den Iterationspfad, wie sie zum Zeitpunkt für jede Arbeitsaufgabe definiert wurden. Nach dem Löschen können Sie keine historischen Daten für diese Pfade abrufen.
  • Sie können nur Bereiche und Iterationspfade löschen, die nicht mehr von Arbeitsaufgaben verwendet werden.

Weitere Informationen zu Burndown und Burnup finden Sie unter Konfigurieren eines Burndown- oder Burnup-Widgets und Burndown- und Burnup-Leitfadens.

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

Beispielabfragen

Die Abfragen in diesem Abschnitt zeigen, wie Burndowndiagramme von Arbeitsaufgaben basierend auf historischen Daten generiert werden. Alle diese Abfragen geben den WorkItemSnapshot Entitätssatz an.

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 PathEntityType verwenden, die Property mit einem EntitySetverfü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 EntityTypebereitgestellt werden.

Burndown von User Stories in einem Bereichspfad vom Start- und Enddatum

Die folgende Abfrage zeigt, wie Sie verlaufsbezogene Daten von User Stories für eine Version basierend auf Arbeitsaufgaben zurückgeben, die mit einem Releasetag markiert sind.

Hinweis

Für Berichte, die auf dem Filtern eines Tags basieren, muss das Tag dem Arbeitselement am Anfang des Veröffentlichungs- oder Burndown-/Burnup-Startdatums zugewiesen werden. Andernfalls ist die Arbeitsaufgabe nicht in den zurückgegebenen Daten enthalten.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, 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
  • {tag} - Ein Tag, das Ihre Version darstellt. Alle arbeitsaufgaben, die {tagname} markiert sind, sind im Bericht enthalten.
  • {startdate} - Das Datum, an dem der Burndownbericht mit dem Format beginnt: YYYY-MM-DDZ. Beispiel: 2022-04-01Z stellt 2022-April-01 dar. Schließen Sie keine Anführungszeichen ein.
  • {enddate} - Das Datum zum Beenden des Burndownberichts.

Abfrageaufschlüsselung

In der folgenden Tabelle werden die einzelnen Teile der Abfrage beschrieben.

Abfrageteil

Beschreibung

$apply=filter(WorkItemType eq 'User Story'

Benutzergeschichten in Burndown einschließen.

and StateCategory ne 'Completed'

Filtert abgeschlossene Elemente heraus. Weitere Informationen zu Statuskategorien finden Sie unter Verwenden von Workflowzuständen und Zustandskategorien in Backlogs und Boards.

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

Fügen Sie nur Benutzergeschichten unter einem bestimmten Bereichspfad hinzu, der ersetzt wird '{areapath}'.
Verwenden Sie die Filteranweisung Teams/any(x:x/TeamName eq '{teamname})', um nach einem Teamnamen zu filtern.

and Tags/any(x:x/TagName eq '{tagname}').

Gibt die Tagbezeichnung an, die die Veröffentlichung des Burndowns darstellt, und alle Arbeitsaufgaben, die mit {tagname} im Bericht markiert sind.

and DateValue ge {startdate}

Beginnen Sie mit dem Burndown am oder nach dem angegebenen Datum. Beispiel: 2019-04-01Z steht für 2019-April-01.

and DateValue le {enddate}

Beginnen Sie mit dem Burndown am oder vor dem angegebenen Datum. Dasselbe Format wie {startdate}.

)

Close-Klausel filter() .

/groupby (

Startklausel groupby() .

(DateValue, State, Area/AreaPath),

Gruppieren Nach DateValue (wird für trending verwendet) und allen Feldern, an denen Sie berichten möchten.

aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints)

Aggregieren nach Anzahl der Benutzergeschichten und Summe von Story Points.

)

Close-Klausel groupby() .

Burndown von User Stories für ein Team

Die folgende Abfrage gibt Burndowndaten zurück, die nach Teamname 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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"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 Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndown-Benutzergeschichten mit einer Momentaufnahme jeden Freitag

Die Verwendung einer wöchentlichen Momentaufnahme reduziert die Datenmenge, die in Power BI abgerufen wird, und erhöht die Abfrageleistung.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndown-Benutzergeschichten basierend auf einem Bereichs- und Iterationspfad

Einige Organisationen verwenden Iterationspfade , um Stories für eine Version zu markieren. Sie können beispielsweise über einen Iterationspfad von MyProject\Release1 verfügen. Die folgende Abfrage zeigt, wie Benutzergeschichten nach Iterationspfad ausgewählt 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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Burndown user Stories mit einem benutzerdefinierten Feldwert

Einige Organisationen verwenden ein benutzerdefiniertes Feld, um User Stories für eine Version zu markieren. Sie können z. B. ein Feld namens "Meilenstein" haben. Diese Abfrage zeigt, wie Sie Benutzergeschichten nach einem benutzerdefinierten Feld auswählen.

Sie müssen sowohl als auch {customfieldname} {releasevalue} in der Abfrage ersetzen. Informationen zum Ermitteln des Namens Ihres benutzerdefinierten Felds finden Sie unter "Metadatenreferenz" für Azure Boards, benutzerdefinierte Eigenschaften. Sie ersetzen {customfieldname} den Benutzerdefinierten Eigenschaftennamen, z. B Custom_Milestone. .

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,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.

Screenshot: Menüoptionen für Power BI-Abfragen, Abfrage umbenennen.

Erweitern von Spalten in Power Query-Editor

Vor dem Erstellen des Berichts müssen Sie Spalten erweitern, die Datensätze zurückgeben, die mehrere Felder enthalten. In diesem Fall sollten Sie die folgenden Datensätze erweitern:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

Informationen zum Erweitern von Arbeitselementen finden Sie unter Transformieren von Analysedaten zum Generieren von Power BI-Berichten.

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.

Screenshot der Option

Erstellen des Gruppierten Säulendiagramms

  1. Wählen Sie in Power BI unter "Visualisierungen" die Option "Gruppiertes Säulendiagramm" aus.

    Screenshot der Auswahl von Power BI-Visualisierungen und -Feldern für den Bericht

  2. Zur X-Achse hinzufügenDateValue, klicken Sie mit der rechten Maustaste, und wählen Sie ausDateValue, anstattDate Hierarchy

  3. Zur Y-Achse hinzufügenCount.

  4. Zur Y-Achse hinzufügenTotalStoryPoints.

Im Beispielbericht wird der Burndown sowohl für die Anzahl von Stories als auch für summen oder Story Points angezeigt.

Screenshot des Power BI Sample Release-Burndownberichts für gruppierte Säulendiagramme.