Eseguire query sui dati di monitoraggio del lavoro con Analytics
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
È possibile eseguire query sui dati di rilevamento del lavoro di Azure DevOps usando le query di base fornite in questo articolo. Queste query rispondono alle esigenze quotidiane e illustrano varie funzionalità di Analisi. È possibile adattare la maggior parte di queste query per soddisfare le proprie esigenze.
Questo articolo si basa su informazioni fornite in Costruire query OData per Analytics e riferimento sui metadati per Analytics di Azure Boards.
Nota
Il servizio Analytics viene abilitato e supportato automaticamente nell'ambiente di produzione per tutti i Servizi DevOps di Azure.
L'integrazione di Power BI e l'accesso al feed OData del servizio di analisi sono disponibili a livello generale. Ti invitiamo a usarlo e a inviare commenti e suggerimenti.
I dati disponibili dipendono dalla versione. La versione supportata più recente è v2.0
e la versione di anteprima più recente è v4.0-preview
. Per altre informazioni, vedere Controllo delle versioni dell'API OData.
Nota
Il servizio Analytics viene installato e supportato automaticamente nell'ambiente di produzione per tutte le nuove raccolte di progetti per Azure DevOps Server 2020 e versioni successive. L'integrazione di Power BI e l'accesso al feed OData del servizio di analisi sono disponibili a livello generale. Ti invitiamo a usarlo e a inviare commenti e suggerimenti. Se è stato eseguito l'aggiornamento da Azure DevOps Server 2019, è possibile installare il servizio Analytics durante l'aggiornamento.
I dati disponibili dipendono dalla versione. La versione supportata più recente è v2.0
e la versione di anteprima più recente è v4.0-preview
. Per altre informazioni, vedere Controllo delle versioni dell'API OData.
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. |
Tutti gli esempi hanno come ambito un progetto in Azure DevOps. Per esempi di definizione dell'ambito a livello di organizzazione o Azure DevOps Server, vedere Query con ambito di progetto e organizzazione.
Suggerimento
È possibile usare l'estensione WIQL per OData Azure DevOps Marketplace per generare rapidamente una query OData basata su una query sugli elementi di lavoro dalla pagina Query . Questa estensione supporta la conversione di elenco flat di elementi di lavoro e elementi di lavoro e collegamenti diretti. Le estensioni non sono supportate dalle funzionalità di Azure Boards e pertanto non sono supportate dal team del prodotto. Per domande, suggerimenti o problemi che si verificano quando si usano queste estensioni, visitare la pagina di estensione corrispondente.
Filtrare gli elementi di lavoro in base a una data modificata
Effettui una query sul set di entità WorkItems
per elencare gli elementi di lavoro che soddisfano i criteri dei campi.
La query seguente restituisce gli elementi del backlog del prodotto, i bug e le funzionalità con una Data di modifica successiva al 12 dicembre 2021.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/v1.0/WorkItems?
$select=WorkItemId, WorkItemType, Title, State
&$expand=AssignedTo($select=UserEmail)
&$filter=(Project/ProjectName eq 'Fabrikam Fiber'
AND (WorkItemType eq 'Product Backlog Item' or WorkItemType eq 'Bug' or WorkItemType eq 'Feature')
AND ChangedOn/Date ge 2021-12-16T23:44:15.619Z)
&$orderby=WorkItemType desc
Filtrare gli elementi di lavoro in base all'area
È possibile modificare la query seguente per elencare tutti gli elementi di lavoro in un percorso di area specifico.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Area/AreaPath eq '{area path}'
&$select=WorkItemId, Title, State
Query di esempio:
Ad esempio, la sintassi seguente esegue una query sul conteggio degli elementi di lavoro per ogni progetto definito per l'organizzazione fabrikam .
https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$apply=groupby((Project/ProjectName), aggregate($count as Count))
Risposta di esempio:
La risposta restituisce i dati per i cinque progetti seguenti.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(Project(ProjectName),Count)",
"value":[
{
"@odata.id":null,
"Count":2,
"Project":{
"@odata.id":null,
"ProjectName":"Basic Fabrikam"
}
},
{
"@odata.id":null,
"Count":19,
"Project":{
"@odata.id":null,
"ProjectName":"Demo 11"
}
},
{
"@odata.id":null,
"Count":188,
"Project":{
"@odata.id":null,
"ProjectName":"Fabrikam Fiber"
}
},
{
"@odata.id":null,
"Count":89,
"Project":{
"@odata.id":null,
"ProjectName":"MyFirstProject"
}
},
{
"@odata.id":null,
"Count":2,
"Project":{
"@odata.id":null,
"ProjectName":"MyPublicProject"
}
}
]
}
Filtrare gli elementi di lavoro in base all'iterazione
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Iteration/IterationPath eq '{iteration path}'
&$select=WorkItemId, Title, State
Query di esempio:
Ad esempio, la sintassi seguente esegue una query sugli elementi di lavoro per il progetto Fabrikam Fiber nel Iteration Path=Fabrikam Fiber\Release 1\Sprint 6.
https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$select=WorkItemId, WorkItemType, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemType ne '' AND Iteration/IterationPath eq 'Fabrikam Fiber\Release 1\Sprint 6')
Risposta di esempio:
La risposta restituisce i dati per i quattro elementi di lavoro seguenti.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,WorkItemType,Title,State,Iteration(IterationPath))",
"value":[
{
"WorkItemId":361,
"Title":"Hello World Web Site",
"WorkItemType":"Product Backlog Item",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1126,
"Title":"web site task",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1136,
"Title":"Add a new task with two new tags",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
},
{
"WorkItemId":1140,
"Title":"New task - test for Blocked",
"WorkItemType":"Task",
"State":"To Do",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 6"
}
}
]
}
Recuperare elementi per un'iterazione
È possibile recuperare tutti gli elementi di lavoro per una determinata iterazione compresa tra il primo giorno dell'iterazione e l'ultimo giorno dell'iterazione. In questo caso, la query è vincolata dai dati contenuti nei dati di rilevamento del lavoro.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Iteration/IterationPath eq '{iteration path}'
and ChangedDate ge Iteration/StartDate
and ChangedDate le Iteration/EndDate
&$select=WorkItemId, Title, State
Filtrare gli elementi di lavoro contenenti tag specifici
L'operatore qualsiasi è usato qui perché esiste una raccolta di tag che possono essere associati a un elemento di lavoro.
Dal punto di vista dell'utilizzo, il formato è: {Navigation Property}/any(d:d/{Field Name} {operator} {expression})
. Qualsiasi elemento non racchiuso tra parentesi graffe ({}) è un elemento letterale. Esistono alcune varianti. Ad esempio, non è necessario usare "d" come usato nell'espressione precedente.
Mantenere questo formato lo rende semplice.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Tags/any(d:d/TagName eq '{tag name}')
&$select=WorkItemId, Title, State
Filtrare gli elementi di lavoro per un team specifico
Usare la query seguente per elencare gli elementi di lavoro per un team specifico.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Teams/any(d:d/TeamName eq '{team name}')
&$select=WorkItemId, Title, State
Filtrare gli elementi di lavoro in base a un campo che abbia mai avuto un valore specifico
La query seguente è simile a una query di un elemento di lavoro che utilizza l'operatore Was Ever.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=WorkItemType eq '{Type}'
and Revisions/any(r:r/ResolvedBy/UserName eq '{User}')
Query di esempio:
La query seguente restituisce gli elementi di lavoro che sono stati assegnati a Jamal Hartnett il cui messaggio di posta elettronica è "fabrikamfiber4@hotmail.com" per il progetto Fabrikam Fiber .
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/WorkItems?
$select=WorkItemType, Title, State,
&$expand=AssignedTo($select=UserEmail), Area($select=AreaPath)
&$filter=(WorkItemType ne '' AND State ne '' AND Revisions/any(r:r/AssignedTo/UserEmail eq 'fabrikamfiber4@hotmail.com'))
&$orderby=WorkItemType asc
Risposta di esempio:
La risposta restituisce due elementi di lavoro.
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/Design%20Agile/_odata/v4.0-preview/$metadata#WorkItems(Priority,WorkItemType,Title,State,TagNames,AssignedTo(UserEmail),Area(AreaPath))",
"value":[
{
"Title":"New home page design",
"WorkItemType":"Feature",
"State":"Closed",
"AssignedTo":{
"UserEmail":"fabrikamfiber4@hotmail.com"
},
"Area":{
"AreaPath":"Design Agile"
}
},
{
"Title":"Check performance",
"WorkItemType":"User Story",
"State":"New",
"AssignedTo":{
"UserEmail":"fabrikamfiber4@hotmail.com"
},
"Area":{
"AreaPath":"Design Agile"
}
}
]
}
Recupera i team assegnati sotto un Percorso Area
La query seguente restituisce i nomi dei team assegnati ai percorsi dell'area Gestione Account per il progetto Fabrikam Fiber.
> https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/Areas?
> $filter=startswith(AreaPath,'Fabrikam Fiber\Account Management')
> &$select=AreaPath&$expand=Teams($select=TeamName)
>```
The response returns three area paths and the names of several teams assigned to each.
> [!div class="tabbedCodeSnippets"]
```OData
> @odata.context "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#Areas(AreaPath,Teams(TeamName))"
> value
> 0
> AreaPath "Fabrikam Fiber\\Account Management\\Customer Profile"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Fabrikam Team"
> 2
> TeamName "Customer Profile"
> 1
> AreaPath "Fabrikam Fiber\\Account Management\\Shopping Cart"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Shopping Cart"
> 2
> TeamName "Fabrikam Team"
> 2
> AreaPath "Fabrikam Fiber\\Account Management"
> Teams
> 0
> TeamName "Organization Management"
> 1
> TeamName "Fabrikam Team"
Restituire la cronologia di un elemento di lavoro specifico
Si esegue una query sul set di entità WorkItemRevisions
per elencare la cronologia degli elementi di lavoro. La query seguente restituisce il valore di Title, State e Iteration Path per ogni revisione per un elemento di lavoro specificato.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemRevisions?
$filter=WorkItemId eq {Id}
&$select=WorkItemId, Title, State, Iteration Path
Nota
Ogni volta che viene apportata una modifica a un elemento di lavoro, inclusa una modifica al valore di classificazione dello stack, viene creata una revisione. Per altre informazioni sui dati cronologici, vedere Applicazione di filtri ai dati cronologici.
Query di esempio:
Ad esempio, la seguente sintassi interroga le revisioni per ID=1145 nel progetto Fabrikam Fiber.
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v1.0/WorkItemRevisions?$select=WorkItemId, Title, State&$expand=Iteration($select=IterationPath)&$filter=(Project/ProjectName eq 'Fabrikam Fiber' AND WorkItemId eq 1145 AND State ne '' AND Revision gt 1)
Risposta di esempio:
La risposta restituisce i dati per le quattro revisioni:
{
"@odata.context":"https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItemRevisions(WorkItemId,Title,State,Iteration(IterationPath))",
"value":[
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Future"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Future"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"New",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
}
},
{
"WorkItemId":1145,
"Title":"Sprint 2 work added in June",
"State":"Done",
"Iteration":{
"IterationPath":"Fabrikam Fiber\\Release 1\\Sprint 2"
}
}
]
}