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 kann zu einem Datenverlust führen und nicht wiederhergestellt werden. Beispielsweise spiegeln Burndown- oder Burnupwidgetdiagramme, Sprint-Burndown- und Geschwindigkeitsdiagramme für Teams, deren Bereichspfade geändert werden, nicht die richtigen Daten wider. Verlaufstrenddiagramme verweisen auf den Bereichs- und Iterationspfad , wie zu einem Zeitpunkt in der Vergangenheit für jedes Arbeitselement definiert. Wenn ein Bereichspfad oder Iterationspfad gelöscht wird, können die Verlaufsdaten dafür nicht abgerufen werden.

Weitere Informationen zum Burndown und Burnup finden Sie unter Konfigurieren eines Burndown- oder Burnup-Widgets sowie burndown- und Burnup-Anleitungen.

Hinweis

In diesem Artikel wird davon ausgegangen, dass Sie die Übersicht über Beispielberichte mit OData-Abfragen gelesen haben und über ein grundlegendes Verständnis von Power BI verfügen.

Voraussetzungen

  • Um Analytics-Daten anzuzeigen und den Dienst abzufragen, müssen Sie Mitglied eines Projekts mit oder höherer Basiszugriff sein. Standardmäßig erhalten alle Projektmitglieder Berechtigungen zum Abfragen von Analytics und zum Definieren von Analytics-Ansichten.
  • Weitere Informationen zu weiteren Voraussetzungen für die Dienst- und Featureaktivierung sowie allgemeine Datennachverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics.

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 finden Sie in den Metadaten, die für den entsprechenden 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.

Sie können die unten aufgeführte Power BI-Abfrage direkt in das Fenster Get Data-Blank> Query einfügen. 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.

Sie können die unten aufgeführte Power BI-Abfrage direkt in das Fenster Get Data-Blank> Query einfügen. 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 einem Momentaufnahme jeden Freitag

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

Sie können die unten aufgeführte Power BI-Abfrage direkt in das Fenster Get Data-Blank> Query einfügen. 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.

Sie können die unten aufgeführte Power BI-Abfrage direkt in das Fenster Get Data-Blank> Query einfügen. 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. .

Sie können die unten aufgeführte Power BI-Abfrage direkt in das Fenster Get Data-Blank> Query einfügen. 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.