Melakukan kueri data tren dengan pengagregasian OData

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

Analytics menyimpan rekam jepret harian dari setiap item kerja dalam dua set entitas: WorkItemSnapshot (melacak nilai bidang seperti status dan upaya) dan WorkItemBoardSnapshot (melacak posisi kolom papan). Karena setiap entitas berisi satu baris per item kerja per hari, tabel ini tumbuh dengan cepat. Gunakan ekstensi agregasi OData untuk memfilter menurut tanggal dan hasil grup sebelum mengembalikan data ke alat klien.

Artikel ini memperlihatkan cara membangun kueri tren menurut rentang tanggal dan dengan iterasi, menggunakan $apply dengan filter, groupby, dan aggregate.

Nota

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 sekarang 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 versi OData API .

Nota

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 sekarang 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 versi OData API .

Nota

Contoh yang diperlihatkan dalam artikel ini didasarkan pada URL Layanan Azure DevOps. Ganti URL Server Azure DevOps Anda sesuai kebutuhan.

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

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.

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.

Data tren menurut rentang tanggal kueri

Saat Anda mengkueri tabel rekam jepret, ikuti dua persyaratan:

  1. Filter menurut tanggal — setiap tabel berisi satu baris per item kerja per hari, sehingga kueri yang tidak difilter mengembalikan tataan hasil yang sangat besar.
  2. Kelompokkan menurut tanggal — jika Anda menghilangkan pengelompokan tanggal, respons menyertakan peringatan.

Kueri berikut mengembalikan jumlah bug harian menurut status untuk Maret 2016:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

Pengembalian:

{
  "value": [
    { "DateValue": "2016-03-01T00:00:00-08:00", "State": "Active", "Count": 2666 },
    { "DateValue": "2016-03-01T00:00:00-08:00", "State": "Closed", "Count": 51408 }
  ]
}

Kueri ini mengembalikan paling banyak 31 hari dikalikan dengan jumlah status bug (Aktif, Diselesaikan, Ditutup) - maksimum 93 baris, terlepas dari berapa banyak item kerja yang ada.

Mengkueri data tren menurut perulangan

Alih-alih melakukan hard-coding tanggal, filter berdasarkan iterasi dan acu tanggal mulai dan akhir sehingga rentang tanggal menyesuaikan secara otomatis. Pengecekan Iteration/EndDate eq null menangani iterasi yang belum memiliki tanggal selesai.

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}/WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

Pengembalian:

{
  "value": [
    { "DateValue": "2016-04-04T00:00:00-07:00", "State": "Active", "Count": 320 },
    { "DateValue": "2016-04-04T00:00:00-07:00", "State": "Closed", "Count": 38 }
  ]
}

Nota

Jika kueri Anda pada tabel rekam jepret tidak menyertakan $apply atau $select, respons mengembalikan peringatan. Selalu gunakan agregasi dengan kumpulan entitas rekam jepret.

Gunakan AI untuk membangun kueri tren

Jika mengonfigurasi Azure DevOps MCP Server, Anda dapat menggunakan asisten AI untuk membantu membangun dan memecahkan masalah kueri tren terhadap kumpulan entitas rekam jepret.

Contoh arahan

Tugas Contoh tanggapan
Tren bug berdasarkan rentang waktu tanggal Write an OData trend query that shows the daily bug count by state over the last 30 days in <ProjectName>.
Tangkapan sprint Create an OData query against WorkItemSnapshot that shows work item counts grouped by date for the current sprint in <ProjectName>.
Filter menurut iterasi Generate an OData trend query that uses the iteration start and end dates from <IterationName> to show story point burndown in <ProjectName>.
Tren kolom papan Write an OData query against WorkItemBoardSnapshot to track work items by board column over the past two weeks in <ProjectName> in the <OrganizationName> organization.
Mengoptimalkan performa My WorkItemSnapshot trend query for <ProjectName> is timing out. Suggest specific date filters and aggregation to reduce the row count without losing the key metrics.
Membandingkan sprint Create an OData trend query that compares bug counts between <SprintName> and the previous sprint in <ProjectName> in the <OrganizationName> organization.
Tren pekerjaan yang tertunda Write an OData trend query that shows the daily sum of remaining work grouped by Area Path for the current iteration in <ProjectName>.
Mendeteksi perubahan status Create an OData snapshot query that tracks how many work items moved from Active to Resolved each day over the past <NumberOfDays> days in <ProjectName>.
Analisis perubahan cakupan Generate an OData trend query that shows the daily count of user stories added or removed from <SprintName> by comparing WorkItemSnapshot data in <ProjectName>.

Petunjuk / Saran

Jika Anda menggunakan Visual Studio Code, mode agen sangat membantu untuk melakukan iterasi pada kueri tren—menyempurnakan rentang tanggal, memecahkan masalah $apply sintaksis, dan memvalidasi hasil rekam jepret.

Langkah selanjutnya