Condividi tramite


Report di esempio di rollup dello stato delle funzionalità

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

** Questo articolo illustra come creare un report con grafico a barre impilate per visualizzare lo stato di avanzamento delle funzionalità in base alle storie utente figlio completate. Il report visualizza la percentuale di completamento tramite rollup di Story Points per un determinato set di funzionalità attive. È possibile visualizzare grafici a barre di stato simili dal backlog aggiungendo una colonna di rollup. Per informazioni su come, vedere Visualizzare lo stato di avanzamento del rollup o i totali.

Quando si creano report di rollup usando Power BI, è possibile che si verifichino problemi relativi ai dati annidati nei set di dati. In particolare, il tentativo di trasformare tramite pivot una tabella che contiene colonne con dati nidificati può generare un messaggio di errore. Per ulteriori informazioni, consultare la sezione sulla gestione dei dati nidificati.

Prerequisiti

Categoria Requisiti
Livelli di accesso Membro del - progetto.
- Accesso almeno di livello di base.
Autorizzazioni Per impostazione predefinita, i membri del progetto dispongono dell'autorizzazione per eseguire query su Analisi e creare viste. 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.

Nota

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

Query di esempio

"L'avanzamento della funzionalità richiede l'entità WorkItems per ottenere lo stato corrente."

Nota

Per trovare le proprietà disponibili per il filtro o la creazione di report, vedere le informazioni di riferimento Metadata per Azure Boards. È possibile filtrare le query o restituire proprietà usando qualsiasi Property valore definito in un EntityTypeoggetto o qualsiasi NavigationPropertyBinding Path valore elencato per un oggetto EntitySet. Ogni EntitySet esegue il mapping a un EntityType, che documenta il tipo di dati per ogni proprietà.

Esaminare lo stato delle funzionalità in base a un percorso di area

Copiare e incollare la query di Power BI seguente direttamente nella finestra Get Data>Blank Query. 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/WorkItems?"
        &"$filter=WorkItemType eq 'Feature' "
            &"and State ne 'Removed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Descendants/any()"
            &"&$select=WorkItemId,Title,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(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 le parentesi graffe {} durante la sostituzione. Ad esempio, se il nome dell'organizzazione è "Fabrikam", sostituire {organization} con Fabrikam, non {Fabrikam}.

  • {organization} - Nome dell'organizzazione
  • {project} - Il nome del progetto del team o omettere /{project} completamente per una query interprogetti
  • {areapath} - Il percorso dell'area. Formato di esempio: Project/Level1/Level2.

Suddivisione delle query

La tabella seguente descrive ogni parte della query.

Parte della query

Descrizione


$filter=WorkItemType eq 'Feature'

Funzionalità di ritorno.

and State ne 'Removed'

Omettere funzionalità contrassegnate come rimosse.

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

Restituisce elementi di lavoro in un percorso di area specifico. Sostituendo con Area/AreaPath eq '{areapath}' restituisce elementi in un percorso di area specifico.
Per filtrare in base al nome del team, usare l'istruzione Teams/any(x:x/TeamName eq '{teamname}')filter .

and Descendants/any()

Filtra tutti gli elementi di lavoro con almeno uno o "qualsiasi" discendente. Include tutte le funzionalità con almeno un elemento di lavoro figlio. Per ottenere tutti gli elementi di lavoro con i relativi discendenti, anche se non ne hanno, eseguire una query senza filtro Descendants/any(). Per omettere le funzionalità che non hanno storie utente secondarie, sostituisci con any(d:d/WorkItemType eq 'User Story').

Per tutti gli elementi di lavoro con e senza discendenti:

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

Per tutti gli elementi di lavoro con almeno un discendente:

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

Selezionare le proprietà da restituire.

&$expand=Descendants(

Inizio della clausola di espansione Descendants

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

Filtrare i discendenti. Includere solo User Stories (omettere le attività e i bug).

/groupby((StateCategory),

Raggruppa il rollup in base alla categoria di stato. 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.

aggregate(StoryPoints with sum as TotalStoryPoints))

Somma aggregata degli Story Points.

)

Chiudi la clausola Descendants().

Esaminare lo stato di avanzamento delle funzionalità per un team

La query seguente corrisponde a quella usata in precedenza, ma filtra in base al nome del team anziché al percorso area.

Copiare e incollare la query di Power BI seguente direttamente nella finestra Get Data>Blank Query. 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/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=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Trasforma i dati in editor di Power Query

La query restituisce diverse colonne che è necessario espandere prima di poterle usare per creare un report. Qualsiasi entità che recuperi utilizzando un'istruzione OData $expand restituisce un record con vari campi potenziali. Espandere il record per rendere flat l'entità nei relativi campi.

Per il report Stato funzionalità, eseguire le trasformazioni seguenti:

  • Espandi la Descendants colonna in due colonne: Descendants.StateCategory e Descendants.TotalStoryPoints.
  • Applicare la trasformazione Colonna pivot sulla Descendants.StateCategory colonna per separare le singole categorie di stato .
  • Sostituire i valori Null in tutte le colonne con pivot.
  • Aggiungere una colonna personalizzata che rappresenti la percentuale di completamento. La colonna personalizzata visualizza errori se sono presenti colonne null nelle colonne State trasformate tramite pivot.

Per sapere come, vedere Trasformare i dati di Analytics per generare report di Power BI.

Gestione dei dati nidificati

Prima di eseguire un'operazione pivot, assicurarsi che il set di dati non contenga colonne con dati annidati. Segui questi passaggi:

  1. Identificare le colonne nidificate: controllare il set di dati per eventuali colonne che potrebbero contenere elenchi, record o tabelle all'interno di una singola cella.
  2. Appiattire o rimuovere dati annidati: Rimuovere le colonne annidate o appiattirle espandendole in colonne separate utilizzando la funzionalità Expand in Power Query.
  3. Eseguire l'operazione pivot: dopo aver affrontato i dati annidati, è possibile procedere con l'operazione pivot senza riscontrare errori.

Nota

In questo esempio i valori Di stato per Storia utente includono Proposta, In corso e Completato.

Chiudere la query e applicare le modifiche

Al termine di tutte le trasformazioni dei dati, selezionare Chiudi e applica dal menu Home . Questa azione salva la query e restituisce la scheda Report in Power BI.

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

Creare il report del grafico a barre sovrapposte

  1. In Power BI selezionare Grafico a barre in pila in Visualizations.

    Screenshot delle visualizzazioni e dei campi di Power BI per il report grafico a barre impilate dello stato delle funzionalità.

  2. Aggiungi Title all'asse Y.

  3. Aggiungi PercentComplete all'asse X, fai clic destro e seleziona Somma.

Viene visualizzato il report di esempio.

Screenshot del report del grafico a barre impilate dell'avanzamento delle funzionalità di esempio.