Laporan sampel rollup kemajuan fitur
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Artikel ini memperlihatkan kepada Anda cara membuat laporan bilah bertumpuk untuk menampilkan kemajuan Fitur berdasarkan Cerita Pengguna anak yang telah selesai. Laporan menampilkan persentase selesai dengan rollup Titik Cerita untuk serangkaian Fitur aktif tertentu. Contoh ditunjukkan dalam gambar berikut.
Anda dapat melihat bagan bilah kemajuan serupa dari backlog Anda dengan menambahkan kolom rollup. Untuk mempelajari caranya, lihat Menampilkan kemajuan atau total rollup.
Catatan
Artikel ini mengasumsikan Anda membaca Gambaran Umum Laporan Sampel menggunakan Kueri OData dan memiliki pemahaman dasar tentang Power BI.
Prasyarat
- Akses: Menjadi anggota proyek dengan setidaknya akses Dasar .
- Izin: Secara default, anggota proyek memiliki izin untuk mengkueri Analitik 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.
Contoh kueri
Kemajuan fitur meminta WorkItems
entitas untuk mendapatkan status kemajuan saat ini.
Catatan
Untuk menentukan properti yang tersedia untuk tujuan filter atau laporan, lihat Referensi metadata untuk Azure Boards. Anda dapat memfilter kueri atau mengembalikan properti menggunakan salah satu nilai di Property
bawah nilai atau NavigationPropertyBinding Path
yang EntityType
tersedia dengan EntitySet
. Masing-masing EntitySet
sesuai dengan EntityType
. Untuk informasi selengkapnya tentang jenis data dari setiap nilai, tinjau metadata yang disediakan untuk yang sesuai EntityType
.
Meninjau kemajuan fitur berdasarkan jalur area
Salin dan tempel kueri Power BI berikut ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, lihat Gambaran umum laporan sampel menggunakan kueri OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Feature' "
&"and State ne 'Removed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and Descendants/any()"
&"&$select=WorkItemId,Title,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
&"&$expand=Descendants( "
&"$apply=filter(WorkItemType eq 'User Story') "
&"/groupby((StateCategory), "
&"aggregate(StoryPoints with sum as TotalStoryPoints)) "
&") "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
String substitusi dan perincian kueri
Ganti string berikut dengan nilai Anda. Jangan sertakan {} tanda kurung dengan pengganti Anda. Misalnya jika nama organisasi Anda adalah "Fabrikam", ganti {organization}
dengan Fabrikam
, bukan {Fabrikam}
.
{organization}
- Nama organisasi Anda{project}
- Nama proyek tim Anda, atau hilangkan/{project}
sepenuhnya, untuk kueri lintas proyek{areapath}
- Jalur Area Anda. Contoh format:Project/Level1/Level2
.
Perincian kueri
Tabel berikut ini menjelaskan setiap bagian kueri.
Bagian kueri
Keterangan
$filter=WorkItemType eq 'Feature'
Mengembalikan Fitur.
and State ne 'Cut'
Hilangkan Fitur yang ditandai sebagai Potong.
and startswith(Area/AreaPath,'{areapath}')
Mengembalikan item kerja di bawah Jalur Area tertentu. Mengganti dengan Area/AreaPath eq '{areapath}'
mengembalikan item di Jalur Area tertentu.
Untuk memfilter menurut Nama Tim, gunakan pernyataan Teams/any(x:x/TeamName eq '{teamname})'
filter .
and Descendants/any()
Filter item kerja apa pun yang memiliki setidaknya satu atau turunan "apa pun". Menyertakan semua Fitur dengan setidaknya satu item kerja Anak. Untuk mendapatkan semua item kerja dengan turunannya, bahkan jika mereka tidak memilikinya, jalankan kueri tanpa Descendants/any()
filter. Untuk menghilangkan Fitur yang tidak memiliki Cerita Pengguna anak, ganti dengan any(d:d/WorkItemType eq 'User Story')
.
Untuk semua item kerja dengan dan tanpa turunan:
$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)
Untuk semua item kerja dengan setidaknya satu turunan:
$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)
&$select=WorkItemId, Title, WorkItemType, State
Pilih properti yang akan dikembalikan.
&$expand=Descendants(
Awal klausa perluas Descendants
$apply=filter(WorkItemType eq 'User Story')
Filter turunan. Hanya menyertakan Cerita Pengguna (hilangkan Tugas dan Bug).
/groupby((StateCategory),
Kelompokkan rollup menurut StateCategory. Untuk informasi selengkapnya tentang Kategori Status, lihat Bagaimana status alur kerja dan kategori status digunakan dalam Backlog dan Papan.
aggregate(StoryPoints with sum as TotalStoryPoints))
Jumlah agregat Titik Cerita.
)
Tutup Descendants()
klausa.
Meninjau kemajuan fitur untuk tim
Kueri berikut sama dengan yang digunakan di atas, kecuali kueri tersebut difilter menurut Nama Tim daripada Jalur Area.
Salin dan tempel kueri Power BI berikut ini langsung ke jendela Dapatkan Kueri Kosong Data>. Untuk informasi selengkapnya, lihat Gambaran umum laporan sampel menggunakan kueri OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?"
&"$filter=WorkItemType eq 'Feature' "
&"and State ne 'Cut' "
&"and (Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) or Teams/any(x:x/TeamName eq '{teamname}) "
&"and Descendants/any() "
&"&$select=WorkItemId,Title,WorkItemType,State,AreaSK "
&"&$expand=Descendants( "
&"$apply=filter(WorkItemType eq 'User Story') "
&"/groupby((StateCategory), "
&"aggregate(StoryPoints with sum as TotalStoryPoints)) "
&") "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Mengubah data dalam Editor Power Query
Kueri mengembalikan beberapa kolom yang perlu Anda perlukan sebelum Anda bisa menggunakannya untuk membuat laporan. Setiap entitas yang ditarik menggunakan pernyataan $expand OData mengembalikan rekaman dengan kemungkinan beberapa bidang. Perluas rekaman untuk meratakan entitas ke bidangnya.
Untuk laporan Kemajuan Fitur, Anda harus melakukan transformasi berikut:
Descendants
Perluas kolom menjadi dua kolom:Descendants.StateCategory
danDescendants.TotalStoryPoints
- Terapkan transformasi Kolom Pivot pada
Descendants.StateCategory
kolom untuk memisahkan kategori Status individual - Ganti nilai null di semua kolom yang dipivot.
- Tambahkan kolom kustom untuk mewakili persentase selesai. Kolom kustom akan menampilkan kesalahan jika ada kolom null di kolom Status yang dipivot.
Untuk mempelajari caranya, lihat bagian berikut ini di data Transform Analytics untuk menghasilkan laporan Power BI:
- Perluas kolom Turunan.
- Kolom Pivot Descendants.StateCategory.
- Ganti nilai null.
- Membuat persentase kolom komputasi lengkap
Catatan
Dalam contoh ini, nilai Status untuk Cerita Pengguna termasuk Diusulkan, Sedang Berlangsung, dan Selesai.
Tutup kueri dan terapkan perubahan Anda
Setelah Anda menyelesaikan semua transformasi data, pilih Tutup & Terapkan dari menu Beranda untuk menyimpan kueri dan kembali ke tab Laporan di Power BI.
Membuat laporan bagan batang bertumpuk
Di Power BI, pilih Laporan bagan batang bertumpuk di bawah Visualisasi.
Tambahkan
Title
ke Sumbu-Y.Tambahkan
PercentComplete
ke Sumbu-X, klik kanan dan pilih Jumlah.
Contoh laporan ditampilkan.