Agregace dat sledování práce pomocí Analýzy
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Pomocí Analýzy s OData můžete získat součet dat sledování práce jedním ze dvou způsobů. První metoda vrátí jednoduchý počet pracovních položek na základě dotazu OData. Druhá metoda vrátí výsledek ve formátu JSON na základě dotazu OData, který provádí cvičení rozšíření agregace OData.
Tento článek sestaví informace poskytnuté v dotazech OData pro analýzu a definuje základní dotazy pomocí OData Analytics. Dotazy jsou také v tomto článku zaměřeny na načítání dat pracovních položek, ale zásady platí pro dotazování jiných sad entit.
V tomto článku se dozvíte:
- O rozšíření agregace OData
- Jak používat rozšíření agregace pro OData
- Seskupení a filtrování agregovaných výsledků
- Jak agregovat data za účelem vygenerování diagramu kumulativního toku
Pokud chcete zjistit, jak generovat jednoduché počty, přečtěte si článek Vrácení počtu položek (žádná jiná data) a Vrácení počtu položek a dat.
Poznámka:
Služba Analytics je automaticky povolená a podporovaná v produkčním prostředí pro všechny služby Azure DevOps Services. Integrace Power BI a přístup k datovému kanálu OData služby Analytics jsou obecně dostupné. Doporučujeme, abyste ho používali a poskytli nám zpětnou vazbu.
Dostupná data jsou závislá na verzi. Nejnovější podporovaná verze je v2.0
a nejnovější verze Preview je v4.0-preview
. Další informace najdete v tématu Správa verzí rozhraní API OData.
Poznámka:
Služba Analytics se automaticky nainstaluje a podporuje v produkčním prostředí pro všechny nové kolekce projektů pro Azure DevOps Server 2020 a novější verze. Integrace Power BI a přístup k datovému kanálu OData služby Analytics jsou obecně dostupné. Doporučujeme, abyste ho používali a poskytli nám zpětnou vazbu. Pokud jste upgradovali z Azure DevOps Serveru 2019, můžete během upgradu nainstalovat službu Analytics.
Dostupná data jsou závislá na verzi. Nejnovější podporovaná verze je v2.0
a nejnovější verze Preview je v4.0-preview
. Další informace najdete v tématu Správa verzí rozhraní API OData.
Poznámka:
Služba Analytics je ve verzi Preview pro Azure DevOps Server 2019. Můžete ji povolit nebo nainstalovat pro kolekci projektů. Integrace Power BI a přístup k datovému kanálu OData služby Analytics jsou ve verzi Preview. Doporučujeme, abyste ho používali a poskytli nám zpětnou vazbu.
Dostupná data jsou závislá na verzi. Nejnovější podporovaná verze je v2.0
a nejnovější verze Preview je v4.0-preview
. Další informace najdete v tématu Správa verzí rozhraní API OData.
Co je rozšíření agregace pro OData?
Analýza spoléhá na OData při vytváření dotazů na data sledování práce. Agregace v OData se dosahuje pomocí rozšíření, které představuje $apply
klíčové slovo. Níže máme několik příkladů použití tohoto klíčového slova. Další informace o rozšíření najdete v rozšíření OData pro agregaci dat.
Agregace dat pomocí rozšíření agregace OData
Teď, když jste viděli, jak provádět jednoduché počty, se podíváme, jak aktivovat agregace pomocí $apply
tokenu, kde je základní formát na konci adresy URL následující:
/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})
Kde:
- {entitySetName} je entita, na kterou je potřeba se dotazovat.
- {columnToAggregate} je sloupec agregace.
- {aggregationType} určuje typ použité agregace.
- {newColumnName} určuje název sloupce, který má hodnoty po agregaci.
Agregovaná data pomocí rozšíření Apply
$apply
Pomocí rozšíření můžete získat počty, součty a další informace při dotazování na data sledování práce.
Vrátí součet všech zbývajících prací.
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(RemainingWork with sum as SumOfRemainingWork)
Vrácení posledního identifikátoru pracovní položky
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate(WorkItemId with max as MaxWorkItemId)
Seskupení výsledků pomocí klauzule groupby
Rozšíření agregace OData také podporuje groupby
klauzuli, která je identická s klauzulí SQL GROUP BY
. Pomocí této klauzule můžete rychle rozdělit čísla podrobněji.
Například následující klauzule vrátí počet pracovních položek:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=aggregate($count as Count)
Přidejte klauzuli groupby
pro vrácení počtu pracovních položek podle typu:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType), aggregate($count as Count))
Vrátí výsledek podobný tomuto příkladu:
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
{
"@odata.id":null,"WorkItemType":"Bug","Count":3
},
{
"@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
}
]
}
Můžete také seskupit podle více vlastností jako v tomto příkladu:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=groupby((WorkItemType, State), aggregate($count as Count))
Vrátí výsledek podobný tomuto příkladu:
{
"@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
"value": [
{
"@odata.id": null,
"State": "Active",
"WorkItemType": "Bug",
"Count": 2
},
{
"@odata.id": null,
"State": "Committed",
"WorkItemType": "Bug",
"Count": 1
},
{
"@odata.id": null,
"State": "Active",
"WorkItemType": "Product Backlog Item",
"Count": 5
},
{
"@odata.id": null,
"State": "Committed",
"WorkItemType": "Product Backlog Item",
"Count": 8
}
]
}
Můžete také seskupit mezi entitami, ale seskupení OData se liší od toho, jak byste o tom mohli normálně přemýšlet.
Předpokládejme například, že jste chtěli vědět, kolik oblastí je v každém projektu v organizaci nebo kolekci. V OData je "count all areas and group them by project" (spočítat všechny oblasti a seskupit je podle projektu) ekvivalentem "give me all projects and a count of areas for each project" (poskytnout mi všechny projekty a počet oblastí pro každý projekt). Výsledkem je dotaz podobný tomuto:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
$apply=groupby((Project/ProjectName), aggregate($count as Count))
Filtrování agregovaných výsledků
Agregované výsledky můžete také filtrovat, ale použijí se trochu jinak než v případě, že nepoužíváte agregaci. Analýza vyhodnocuje filtry podél kanálu, takže je vždy nejlepší nejprve provést nejpochybnější filtrování.
Filtry vypadají jako v tomto příkladu:
https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
$apply=
filter(Iteration/IterationName eq 'Sprint 89')/
filter(WorkItemType eq 'User Story')/
groupby((State), aggregate($count as Count))
Poznámka:
Klauzuli groupby
nemusíte zadávat. Klauzuli aggregate
můžete jednoduše použít k vrácení jedné hodnoty.
Generování více agregací v rámci jednoho volání
Můžete chtít zadat více informací. Příkladem je součet dokončené práce a samostatně součet zbývající práce. V takovém případě můžete provádět samostatná volání nebo jedno volání následujícím způsobem:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)
Vrátí výsledek, který bude vypadat jako v tomto příkladu:
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
{
"@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
}
]
}
Generování počítaných vlastností pro použití v rámci jednoho volání
K výpočtu vlastností pro použití v sadě výsledků možná budete muset použít matematický výraz. Příkladem je součet dokončené práce, která je rozdělena součtem dokončené práce a součtem zbývající práce k výpočtu procenta dokončené práce. V takovém případě můžete použít tento příklad:
/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)
{
"@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
{
"@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
}
]
}
Generování kumulativního vývojového diagramu z agregovaných dat
Řekněme, že chcete v Power BI vytvořit kumulativní vývojový diagram . Můžete použít dotaz podobný následujícímu:
https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue
Vrátí výsledek podobný tomuto příkladu. Pak ho můžete použít přímo ve zvolené vizualizaci dat.
{
"@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
"value": [
{
"@odata.id": null,
"DateValue": "2015-07-16T00:00:00-07:00",
"Count": 324,
"ColumnName": "Completed"
},
{
"@odata.id": null,
"DateValue": "2015-07-16T00:00:00-07:00",
"Count": 5,
"ColumnName": "In Progress"
}
]
}
Pojďme se podívat, co tento dotaz skutečně dělá:
- Filtruje data konkrétnímu týmu.
- Filtruje data na konkrétní backlog.
- Vrátí počet pracovních položek.
Při aktualizaci Power BI nebo Excelu je potřeba méně řádků, tím rychleji se aktualizace provede.