Rilasciare query e report di esempio di burndown

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

I report burndown e burnup mostrano quanto lavoro viene completato nel tempo. L'immagine seguente mostra il burndown in base al conteggio delle storie utente e alla somma dei punti storia.

Screenshot del report dell'istogramma a colonne cluster della versione di Power BI.

I grafici burn-down hanno senso solo se si pianifica il lavoro per il periodo di tempo del grafico. In caso contrario, se si prevede uno sprint per sprint, non verrà visualizzato un burndown standard. In questi casi, un grafico di burnup ha più senso per vedere come vengono eseguiti i progressi nel tempo.

Importante

L'eliminazione di percorsi di area o la riconfigurazione dei percorsi di iterazione può causare una perdita di dati e non può essere ripristinata. Ad esempio, i grafici dei widget burndown o burnup, il burndown sprint e i grafici di velocità per i team i cui percorsi di area vengono modificati non rifletteranno i dati corretti. I grafici di tendenza cronologici fanno riferimento al percorso area e al percorso di iterazione, come definito in un punto nel passato per ogni elemento di lavoro. Quando viene eliminato un percorso area o un percorso di iterazione, non è possibile recuperare i dati cronologici.

Per altre informazioni sul burndown e sul burnup, vedere Configurare un widget burndown o burnup e burndown e indicazioni sul burnup.

Nota

Questo articolo presuppone di avere letto Panoramica dei report di esempio usando query OData e avere una conoscenza di base di Power BI.

Prerequisiti

  • Per visualizzare i dati di Analisi ed eseguire query sul servizio, è necessario essere membri di un progetto con accesso basic o superiore. Per impostazione predefinita, a tutti i membri del progetto vengono concesse le autorizzazioni per eseguire query su Analisi e definire le visualizzazioni di Analisi.
  • Per altre informazioni sugli altri prerequisiti relativi all'abilitazione di servizi e funzionalità e alle attività generali di rilevamento dei dati, vedere Autorizzazioni e prerequisiti per l'accesso ad Analytics.

Query di esempio

Le query in questa sezione illustrano come generare grafici burn-down degli elementi di lavoro in base ai dati cronologici. Tutte queste query specificano il WorkItemSnapshot set di entità.

Nota

Per determinare le proprietà disponibili a scopo di filtro o report, vedere Informazioni di riferimento sui metadati per Azure Boards. È possibile filtrare le query o restituire proprietà usando uno qualsiasi dei Property valori in un EntityType oggetto o NavigationPropertyBinding Path i valori disponibili con un oggetto EntitySet. Ognuno EntitySet corrisponde a un oggetto EntityType. Per altre informazioni sul tipo di dati di ogni valore, esaminare i metadati forniti per l'oggetto corrispondente EntityType.

Burndown delle storie utente in un percorso di area dalla data di inizio e di fine

La query seguente illustra come restituire i dati cronologici delle storie utente per una versione in base agli elementi di lavoro contrassegnati con un tag di versione.

Nota

Per i report basati sul filtro di un tag, il tag deve essere assegnato all'elemento di lavoro all'inizio della data di inizio del rilascio o del burndown/burnup. In caso contrario, l'elemento di lavoro non è incluso nei dati restituiti.

È possibile incollare la query di Power BI elencata di seguito direttamente nella finestra Recupera query vuota dati>. Per altre informazioni, vedere Panoramica dei report di esempio che usano query OData.

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

Stringhe di sostituzione e scomposizione delle query

Sostituire le stringhe seguenti con i valori. Non includere parentesi quadre {} con la sostituzione. Ad esempio, se il nome dell'organizzazione è "Fabrikam", sostituire {organization} con Fabrikam, non {Fabrikam}.

  • {organization} - Nome dell'organizzazione
  • {project} - Nome del progetto team o omettere completamente "/{project}" per una query tra progetti
  • {areapath} - Il percorso dell'area. Formato di esempio: Project\Level1\Level2
  • {tag} - Tag che rappresenta la versione. Tutti gli elementi di lavoro contrassegnati con {tagname} sono inclusi nel report
  • {startdate} - Data di inizio del report burndown con il formato : YYYY-MM-DDZ. Ad esempio: 2022-04-01Z rappresenta il 2022-aprile-01. Non racchiudere tra virgolette.
  • {enddate} - Data di fine del report di burndown.

Suddivisione delle query

La tabella seguente descrive ogni parte della query.

Parte della query

Descrizione

$apply=filter(WorkItemType eq 'User Story'

Includi storie utente nel burndown.

and StateCategory ne 'Completed'

Filtra gli elementi completati. Per altre informazioni sulle categorie di stato, vedere Modalità di utilizzo degli stati e delle categorie di stato del flusso di lavoro nei backlog e nelle bacheche.

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

Includere solo le storie utente in un percorso di area specifico sostituendo '{areapath}'.
Per filtrare in base al nome di un team, usare l'istruzione Teams/any(x:x/TeamName eq '{teamname})'filter .

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

Specifica l'etichetta di tag che rappresenta la versione in cui eseguire il burndown e per includere tutti gli elementi di lavoro contrassegnati con {tagname} nel report.

and DateValue ge {startdate}

Avviare il burndown su o dopo la data specificata. Esempio: 2019-04-01Z rappresenta il 2019-aprile-01.

and DateValue le {enddate}

Avviare il burndown prima o prima della data specificata. Stesso formato di {startdate}.

)

Clausola Close filter() .

/groupby (

Clausola Start groupby() .

(DateValue, State, Area/AreaPath),

Raggruppa per DateValue (usato per la tendenza) e tutti i campi su cui si desidera creare report.

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

Aggrega per conteggio delle storie utente e della somma dei punti storia.

)

Clausola Close groupby() .

Burndown delle storie utente per un team

La query seguente restituisce i dati di burndown filtrati in base al nome del team anziché al percorso area.

È possibile incollare la query di Power BI elencata di seguito direttamente nella finestra Recupera query vuota dati>. Per altre informazioni, vedere Panoramica dei report di esempio che usano query OData.

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 User Stories con uno snapshot ogni venerdì

L'uso di uno snapshot settimanale riduce la quantità di dati estratti in Power BI e aumenta le prestazioni delle query.

È possibile incollare la query di Power BI elencata di seguito direttamente nella finestra Recupera query vuota dati>. Per altre informazioni, vedere Panoramica dei report di esempio che usano query OData.

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 User Stories basato su un'area e un percorso di iterazione

Alcune organizzazioni usano percorsi di iterazione per contrassegnare le storie per una versione. Ad esempio, possono avere un percorso di iterazione di MyProject\Release1. La query seguente mostra come selezionare Storie utente in base al percorso di iterazione.

È possibile incollare la query di Power BI elencata di seguito direttamente nella finestra Recupera query vuota dati>. Per altre informazioni, vedere Panoramica dei report di esempio che usano query OData.

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 con un valore di campo personalizzato

Alcune organizzazioni usano un campo personalizzato per contrassegnare le storie utente per una versione. Ad esempio, possono avere un campo denominato Cardine. Questa query mostra come selezionare Storie utente in base a un campo personalizzato.

Sarà necessario sostituire sia che {customfieldname}{releasevalue} nella query. Per determinare il nome del campo personalizzato, vedere Informazioni di riferimento sui metadati per Azure Boards, Proprietà personalizzate. Si sostituirà {customfieldname} con il nome della proprietà personalizzata, ad esempio Custom_Milestone.

È possibile incollare la query di Power BI elencata di seguito direttamente nella finestra Recupera query vuota dati>. Per altre informazioni, vedere Panoramica dei report di esempio che usano query OData.

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

(Facoltativo) Rinominare la query

È possibile rinominare l'etichetta di query predefinita Query1 in qualcosa di più significativo. È sufficiente immettere un nuovo nome dal riquadro Query Impostazioni.

Screenshot delle opzioni del menu query di Power BI, rinominare la query.

Espandere le colonne in editor di Power Query

Prima di creare il report, è necessario espandere le colonne che restituiscono record contenenti diversi campi. In questa istanza è necessario espandere i record seguenti:

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

Per informazioni su come espandere gli elementi di lavoro, vedere Trasformare i dati di Analisi per generare report di Power BI.

Chiudere la query e applicare le modifiche

Dopo aver completato tutte le trasformazioni dei dati, scegliere Chiudi e applica dal menu Home per salvare la query e tornare alla scheda Report in Power BI.

Screenshot dell'opzione Chiudi e applica editor di Power Query.

Creare l'istogramma a colonne raggruppate

  1. In Power BI scegliere Istogramma cluster in Visualizzazioni.

    Screenshot delle visualizzazioni e delle selezioni dei campi di Power BI per il report del grafico a colonne cluster Release burndown.

  2. Aggiungi DateValue all'asse X, fai clic con il pulsante destro del mouse e scegli DateValue, anzichéDate Hierarchy

  3. Aggiungi Count all'asse Y.

  4. Aggiungi TotalStoryPoints all'asse Y.

Il report di esempio visualizza il burndown sia sul conteggio delle storie che sulla somma o sui punti storia.

Screenshot del report dell'istogramma a colonne cluster della versione di esempio di Power BI.