Menggabungkan data pelacakan kerja dengan menggunakan Analytics

Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Anda dapat menggabungkan data pelacakan kerja dengan menggunakan Analytics dengan OData dengan dua cara: gunakan $count untuk total sederhana, atau menggunakan ekstensi agregasi OData $apply untuk mengembalikan hasil yang dikelompokkan, difilter, dan dihitung sebagai JSON.

Petunjuk / Saran

Anda dapat menggunakan AI untuk membantu tugas ini nanti di artikel ini, atau lihat Mengaktifkan bantuan AI dengan Azure DevOps MCP Server untuk memulai.

Artikel ini dibangun berdasarkan Membangun kueri OData untuk Analitik dan Menggunakan OData Analytics untuk menentukan kueri dasar. Contoh berfokus pada data item kerja, tetapi prinsip yang sama berlaku untuk kumpulan entitas lain. Untuk kueri hitungan sederhana, lihat Mendapatkan hitungan item.

Catatan

Layanan Analitik diaktifkan secara otomatis dan didukung dalam produksi untuk semua layanan dalam Azure DevOps Services. Integrasi Power BI dan akses ke umpan OData dari layanan Analytics kini tersedia secara umum. Anda dianjurkan untuk menggunakan umpan OData Analytics dan memberikan umpan balik.

Data yang tersedia bergantung pada versi. Versi terbaru yang didukung dari API OData adalah v2.0, dan versi pratinjau terbaru adalah v4.0-preview. Untuk informasi selengkapnya, lihat Versioning API OData.

Catatan

Layanan Analytics secara otomatis diinstal dan didukung dalam produksi untuk semua koleksi proyek baru untuk Azure DevOps Server 2020 dan versi yang lebih baru. Integrasi Power BI dan akses ke umpan OData dari layanan Analytics kini tersedia secara umum. Anda dianjurkan untuk menggunakan umpan OData Analytics dan memberikan umpan balik. Jika Anda meningkatkan dari Azure DevOps Server 2019, Anda dapat menginstal layanan Analytics selama peningkatan.

Data yang tersedia bergantung pada versi. Versi terbaru yang didukung dari API OData adalah v2.0, dan versi pratinjau terbaru adalah v4.0-preview. Untuk informasi selengkapnya, lihat Versioning API OData.

Prasyarat

Kategori Persyaratan
Tingkat akses - anggota proyek.
- Setidaknya akses dasar.
Izin Secara default, anggota proyek memiliki izin untuk mengkueri Analytics dan membuat tampilan. Untuk informasi selengkapnya tentang prasyarat lain mengenai pengaktifan layanan dan fitur serta aktivitas pelacakan data umum, lihat Izin dan prasyarat untuk mengakses Analitik.

Tentang ekstensi agregasi $apply

OData menyediakan ekstensi agregasi yang memperkenalkan $apply kata kunci untuk mengelompokkan, memfilter, dan menghitung nilai agregat atas data pelacakan kerja Anda. Bagian berikut menunjukkan cara menggunakan $apply dengan , , aggregategroupby, dan filtercompute. Untuk spesifikasi lengkapnya, lihat Ekstensi OData untuk Agregasi Data.

Agregat data dengan menggunakan $apply

Tambahkan $apply token ke URL kueri Anda untuk memicu agregasi. Sintaks dasarnya adalah:

/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})

Parameter Deskripsi
{entitySetName} Entitas yang akan dikueri, seperti WorkItems.
{columnToAggregate} Bidang yang akan diagregasikan, seperti RemainingWork.
{aggregationType} Fungsi agregasi: sum, , min, maxaverage, atau countdistinct.
{newColumnName} Alias untuk kolom hasil agregat.

Contoh berikut menunjukkan operasi umum aggregate .

Kembalikan jumlah semua pekerjaan yang tersisa

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(RemainingWork with sum as SumOfRemainingWork)

Mengembalikan ID item kerja terakhir

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(WorkItemId with max as MaxWorkItemId)

Mengelompokkan hasil menggunakan groupby

Klausa groupby berfungsi seperti SQL GROUP BY - ini memecah hasil agregat oleh satu atau beberapa properti.

Menghitung item kerja menurut jenis

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType), aggregate($count as Count))

Mengembalikan hasil seperti:

{
  "value": [
    { "WorkItemType": "Bug", "Count": 3 },
    { "WorkItemType": "Product Backlog Item", "Count": 13 }
  ]
}

Mengelompokkan menurut beberapa properti

Tambahkan lebih banyak properti di groupby dalam tanda kurung untuk membuat perincian yang lebih halus:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType, State), aggregate($count as Count))

Mengembalikan satu baris untuk setiap kombinasi unik jenis dan status (misalnya, Bug/Aktif, Bug/Berkomitmen, Item Backlog Produk/Aktif).

Mengelompokkan antar entitas

Anda dapat mengelompokkan di seluruh entitas terkait dengan menggunakan properti navigasi. Misalnya, untuk menghitung area per proyek:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $apply=groupby((Project/ProjectName), aggregate($count as Count))

Memfilter hasil agregat

Gunakan filter() di dalam $apply untuk mempersempit data sebelum atau sesudah agregasi. Rantai beberapa filter dengan menggunakan / (pipa) dan tempatkan filter paling selektif terlebih dahulu untuk performa terbaik.

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))

Catatan

Klausa groupby bersifat opsional. Gunakan aggregate sendiri untuk mengembalikan satu nilai.

Mengagregasi beberapa bidang dalam satu panggilan

Cantumkan beberapa bidang di dalam satu aggregate klausul, dipisahkan oleh koma, untuk menghindari perjalanan pulang pergi tambahan.

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)

Pengembalian:

{
  "value": [
    { "SumOfCompletedWork": 1525841.29, "SumOfRemainingWork": 73842.39 }
  ]
}

Menghitung properti

Alihkan hasil agregat ke compute() untuk memperoleh nilai baru dengan menggunakan ekspresi aritmatika (div, add, sub, mul). Contoh berikut menghitung persentase pekerjaan yang diselesaikan:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)

Pengembalian:

{
  "value": [
    { "DonePercentage": 0.9676, "SumOfCompletedWork": 1514698.34, "SumOfRemainingWork": 50715.95 }
  ]
}

Membuat kueri diagram alur kumulatif

Kueri berikut menggabungkan filter, groupby, dan aggregate terhadap WorkItemBoardSnapshot kumpulan entitas untuk menghasilkan data diagram aliran kumulatif di Power BI atau Excel.

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

Kueri ini memfilter menurut rentang tanggal serta papan dan tim tertentu, mengelompokkan berdasarkan tanggal dan kolom papan, dan mengembalikan jumlah per grup. Pengembalian:

{
  "value": [
    { "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "Completed", "Count": 324 },
    { "DateValue": "2015-07-16T00:00:00-07:00", "ColumnName": "In Progress", "Count": 5 }
  ]
}

Petunjuk / Saran

Semakin sedikit baris yang dikembalikan, Power BI atau Excel yang lebih cepat direfresh. Gunakan rentang tanggal yang ketat dan filter papan dan tim tertentu untuk meminimalkan kumpulan hasil.

Menggunakan AI untuk mengagregasi data pelacakan kerja

Jika mengonfigurasi Azure DevOps MCP Server, Anda dapat meminta asisten AI untuk mengambil data item kerja real time dari organisasi Azure DevOps dan membantu Anda menyusun atau memecahkan masalah kueri agregasi Analytics OData $apply berdasarkan data tersebut.

Tugas Contoh tanggapan
Hitung menurut provinsi In <OrganizationName>, draft an Analytics OData $apply query that counts work items grouped by State in <ProjectName>. Use placeholders for <ODataVersion> and any filters I need.
Hitung menurut jenis dan status Create an Analytics OData $apply query for <OrganizationName> that groups WorkItems by WorkItemType and State and returns a count for each group in <ProjectName>.
Filter lalu agregat Write an Analytics OData query that filters WorkItems to bugs with Priority = 1 in <ProjectName>, then groups by Area/AreaPath and State and returns counts.
Jumlah total pekerjaan yang tersisa dan telah selesai Generate an Analytics OData $apply query that filters to Iteration/IterationPath startswith '<IterationPath>' in <ProjectName>, then returns SumOfCompletedWork and SumOfRemainingWork.
Agregat antar tim Help me create an Analytics OData $apply query for WorkItemBoardSnapshot that filters to BoardName '<BoardName>' and Team/TeamName '<TeamName>' in <ProjectName>, then groups by DateValue and ColumnName and returns Count.
Menjelaskan setiap klausa Explain what each part of this $apply query does and how to adjust it for a different iteration: <ODataQueryOrUrl>.
Kesalahan debug $apply This Analytics OData query returns a 400 error. Diagnose the $apply syntax and suggest a corrected query: <ODataQueryOrUrl>.
Memvalidasi hasil Given this Analytics OData query for <OrganizationName>/<ProjectName>: <ODataQueryOrUrl>, tell me what columns and shape of JSON to expect back, and what common mistakes to check if results look wrong.

Petunjuk / Saran

Jika Anda menggunakan Visual Studio Code, mode agen sangat membantu untuk melakukan iterasi pada kueri agregasi—menyempurnakan filter, memecahkan masalah $apply sintaksis, dan memvalidasi hasil.

Langkah selanjutnya