Köra frågor mot arbetsspårningsdata med analytics
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Du kan köra frågor mot dina Azure DevOps-arbetsspårningsdata med hjälp av de grundläggande frågorna i den här artikeln. Dessa frågor tillgodoser vardagliga behov samtidigt som olika funktioner i Analys demonstreras. Du kan anpassa de flesta av dessa frågor efter dina behov.
Den här artikeln bygger vidare på information som tillhandahålls i Skapa OData-frågor för analys - och metadatareferens för Azure Boards Analytics.
Kommentar
Analytics-tjänsten aktiveras automatiskt och stöds i produktion för alla Azure DevOps Services. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Kommentar
Analytics-tjänsten installeras automatiskt och stöds i produktion för alla nya projektsamlingar för Azure DevOps Server 2020 och senare versioner. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback. Om du har uppgraderat från Azure DevOps Server 2019 kan du installera Analytics-tjänsten under uppgraderingen.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Kommentar
Analytics-tjänsten är en förhandsversion för Azure DevOps Server 2019. Du kan aktivera eller installera den för en projektsamling. Power BI-integrering och åtkomst till OData-flödet för Analystjänsten finns i förhandsversion. Vi rekommenderar att du använder den och ger oss feedback.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Förutsättningar
- Åtkomst: Vara medlem i ett projekt med minst grundläggande åtkomst.
- Behörigheter: Som standard har projektmedlemmar behörighet att fråga Analytics och skapa vyer.
- Mer information om andra förutsättningar för tjänst- och funktionsaktivering och allmänna dataspårningsaktiviteter finns i Behörigheter och krav för åtkomst till analys.
Alla exempel är begränsade till ett projekt i Azure DevOps. Exempel på omfång på organisationsnivå eller Azure DevOps Server finns i Projekt- och organisationsomfångsfrågor.
Dricks
Du kan använda WIQL till OData Azure DevOps Marketplace-tillägget för att snabbt generera en OData-fråga baserat på en arbetsobjektfråga från sidan Frågor . Det här tillägget stöder konvertering av flat lista över arbetsobjekt och Arbetsobjekt och direkta länkar. Tillägg stöds inte i Azure Boards och stöds därför inte av produktteamet. Frågor, förslag eller problem som du har när du använder dessa tillägg finns på motsvarande tilläggssida.
Filtrera arbetsobjekt baserat på ett ändrat datum
Du frågar entiteten WorkItems
som angetts för att visa arbetsobjekt som uppfyller dina fältvillkor.
Följande fråga returnerar produktpost, buggar och funktioner som har ett ändrat datum som är större än den 12 december 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
Filtrera arbetsobjekt baserat på område
Du kan ändra följande fråga för att visa alla arbetsobjekt under en specifik områdessökväg.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Area/AreaPath eq '{area path}'
&$select=WorkItemId, Title, State
Exempelfråga:
Följande syntax frågar till exempel antalet arbetsobjekt för varje projekt som definierats för fabrikam-organisationen .
https://analytics.dev.azure.com/fabrikam/_odata/v4.0-preview/WorkItems?$apply=groupby((Project/ProjectName), aggregate($count as Count))
Exempelsvar:
Och svaret returnerar data för följande fem projekt.
{
"@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"
}
}
]
}
Filtrera arbetsobjekt baserat på iteration
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Iteration/IterationPath eq '{iteration path}'
&$select=WorkItemId, Title, State
Exempelfråga:
Följande syntax frågar till exempel arbetsobjekt för Fabrikam Fiber-projektet under 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')
Exempelsvar:
Och svaret returnerar data för följande fyra arbetsobjekt.
{
"@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"
}
}
]
}
Hämta objekt för en iteration
Du kan hämta alla arbetsobjekt för en viss iteration som faller mellan iterationens första dag och iterationens sista dag. Här begränsas frågan av data som finns i arbetsspårningsdata.
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
Filtrera arbetsobjekt som innehåller specifika taggar
Alla operatorer används här eftersom det finns en samling taggar som kan associeras med ett arbetsobjekt.
Ur ett användningsperspektiv är formatet: {Navigation Property}/any(d:d/{Field Name} {operator} {expression})
. Alla objekt som inte omges av klammerparenteser ({}) är en literal. Det finns vissa varianter. Du behöver till exempel inte använda "d" som används i uttrycket ovan.
Om du följer det här formatet är det enkelt.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Tags/any(d:d/TagName eq '{tag name}')
&$select=WorkItemId, Title, State
Filtrera arbetsobjekt för ett visst team
Använd följande fråga för att lista arbetsobjekt för ett visst team.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItems?
$filter=Teams/any(d:d/TeamName eq '{team name}')
&$select=WorkItemId, Title, State
Filtrera arbetsobjekt baserat på ett fält som någonsin har ett specifikt värde
Följande fråga liknar en arbetsobjektsfråga som använder operatorn 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}')
Exempelfråga:
Följande fråga returnerar de arbetsobjekt som någonsin tilldelats Till Jamal Hartnett vars e-post är "fabrikamfiber4@hotmail.com" för Fabrikam Fiber-projektet .
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
Exempelsvar:
Svaret returnerar två arbetsobjekt.
{
"@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"
}
}
]
}
Hämta de team som tilldelats under en områdessökväg
Följande fråga returnerar namnen på team som tilldelats till områdessökvägar under området Kontohantering för Fabrikam Fiber-projektet .
> 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"
Returnera historiken för ett specifikt arbetsobjekt
Du frågar entiteten som WorkItemRevisions
angetts till listhistorik för arbetsobjekt. Följande fråga returnerar värdet för sökvägen Rubrik, Tillstånd och Iteration för varje revision för ett angivet arbetsobjekt.
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemRevisions?
$filter=WorkItemId eq {Id}
&$select=WorkItemId, Title, State, Iteration Path
Kommentar
Varje gång en ändring görs i ett arbetsobjekt, inklusive en ändring av stackrankningsvärdet, skapas en revision. Mer information om historiska data finns i Tillämpa filter på historiska data.
Exempelfråga:
Följande syntax frågar till exempel revisioner för ID=1145 i Fabrikam Fiber-projektet.
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)
Exempelsvar:
Och svaret returnerar data för de fyra revisionerna:
{
"@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"
}
}
]
}