Bagikan melalui


Nilai item kerja turunan rollup ke laporan sampel induk

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Rollup menyediakan dukungan untuk menampilkan jumlah item kerja atau jumlah Titik Cerita, Sisa Pekerjaan, atau bidang kustom item turunan lainnya. Artikel ini menyediakan beberapa contoh cara membuat laporan rollup tabular untuk Epik, Fitur, atau Cerita Pengguna yang berisi item kerja anak. Gambar berikut menunjukkan contoh Titik Cerita yang digulung untuk Fitur induknya.

Cuplikan layar laporan matriks rollup fitur.

Untuk informasi selengkapnya tentang rollup dan opsi untuk menampilkan rollup, lihat Menampilkan kemajuan rollup atau total di Azure Boards.

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

Kueri berikut mengembalikan data dari entitas yang WorkItems diatur untuk mendukung pembuatan laporan matriks rollup.

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.

Rollup Story Menunjuk ke Fitur Cerita Pengguna anak 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 'Cut'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any()"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate($count as CountOfUserStories, 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 bug tertutup.

and startswith(Area/AreaPath,'{areapath}')

Mengembalikan item kerja di bawah Jalur Area tertentu, menggantikan Area/AreaPath eq '{areapath}' item yang dikembalikan di Jalur Area tertentu. Untuk memfilter menurut Nama Tim, gunakan pernyataan Teams/any(x:x/TeamName eq '{teamname})'filter .

and Descendants/any()

Sertakan semua Fitur, bahkan fitur tanpa Cerita Pengguna. Ganti dengan "any(d:d/WorkItemType eq 'Cerita Pengguna')" untuk menghilangkan Fitur yang tidak memiliki Cerita Pengguna anak.

&$select=WorkItemId, Title, WorkItemType, State

Pilih bidang yang akan dikembalikan.

&$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath),

Pilih bidang AssignedToproperti yang dapat diperluas , Iteration, Area.

Descendants(

Descendants Perluas klausa.

$apply=filter(WorkItemType eq 'User Story')

Filter turunan untuk hanya menyertakan Cerita Pengguna (menghilangkan tugas dan bug).

/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)

Untuk semua turunan yang cocok dengan klausa filter, hitung, dan jumlahkan StoryPoints properti.

)

Tutup Descendants().

Rollup Story Menunjuk ke Fitur Cerita Pengguna anak berdasarkan Teams

Kueri berikut menunjukkan cara membuat pemfilteran laporan rollup berdasarkan 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=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate($count as CountOfUserStories, StoryPoints with sum as TotalStoryPoints)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Rollup Story Points ke Epik

Anda dapat menggulung cerita menunjuk ke Epik menggunakan kueri berikut.

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 'Epic'"
            &" and State ne 'Cut'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any(d:d/WorkItemType eq 'User Story')"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'User Story')"
                &"/aggregate(StoryPoints with sum as TotalStoryPoints)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Tugas Rollup Sisa Pekerjaan dan Pekerjaan Selesai untuk Cerita Pengguna

Kueri berikut ini memperlihatkan cara menggulung Sisa Pekerjaan dan Pekerjaan Selesai yang ditetapkan ke Tugas anak ke Cerita Pengguna dalam hierarki. Kueri ini mengasumsikan bahwa Tugas ditetapkan sebagai anak dari Cerita Pengguna di Jalur Area yang ditentukan.

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 'User Story'"
            &" and State ne 'Removed'"
            &" and startswith(Area/AreaPath,'{areapath}')"
            &" and Descendants/any()"    
        &"& $select=WorkItemId,Title,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'Task')"
                &"/aggregate(RemainingWork with sum as TotalRemainingWork, CompletedWork with sum as TotalCompletedWork)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

Jumlah Bug Rollup ke Fitur

Kueri berikut menunjukkan cara menggulung jumlah Bug yang ditetapkan ke Fitur. Kueri ini mengasumsikan bahwa Bug didefinisikan sebagai anak dari Fitur di Jalur Area yang ditentukan.

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,WorkItemType,State,AreaSK"
        &"& $expand=AssignedTo($select=UserName),Iteration($select=IterationPath),Area($select=AreaPath),"        
            &"Descendants("
                &"$apply=filter(WorkItemType eq 'Bug')"
                &"/aggregate($count as CountOfBugs)"
            &")", 
        null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])  
in
    Source

(Opsional) Mengganti nama kueri

Anda bisa mengganti nama label kueri default, Query1, menjadi sesuatu yang lebih bermakna. Cukup masukkan nama baru dari panel Pengaturan Kueri.

Cuplikan layar opsi menu kueri Power BI, ganti nama kueri.

Memperluas kolom di Power BI

Klausa &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath) mengembalikan rekaman yang berisi beberapa bidang. Sebelum membuat laporan, Anda perlu memperluas catatan untuk meratakannya ke bidang tertentu. Dalam hal ini, Anda mungkin ingin memperluas rekaman berikut:

  • AssignedTo
  • AreaPath
  • IterationPath

Untuk mempelajari caranya, lihat Mengubah data Analitik untuk menghasilkan laporan Power BI.

(Opsional) Ganti nama bidang

Setelah memperluas kolom, Anda mungkin ingin mengganti nama satu atau beberapa bidang. Misalnya, Anda dapat mengganti nama kolom AreaPath menjadi Area Path. Untuk mempelajari caranya, lihat Mengganti nama bidang kolom.

Mengganti nilai null dalam bidang rollup

Jika item kerja tidak memiliki anak, nilai rollup mungkin null. Misalnya, Descendants.CountOfUserStories adalah "null" jika Fitur tidak memiliki Cerita Pengguna anak.

Untuk pelaporan yang lebih mudah, ganti semua null dengan nol dengan mengikuti langkah-langkah ini.

  1. Pilih kolom dengan mengklik header kolom.
  2. Pilih menu Transformasi .
  3. Pilih Ganti Nilai. Dialog Ganti Nilai muncul.
  4. Masukkan "null" di Nilai untuk Ditemukan.
  5. Masukkan "0" di Ganti Dengan.
  6. Pilih OK.

Ulangi untuk semua kolom rollup.

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.

Cuplikan layar opsi Editor Power Query Tutup dan Terapkan.

Membuat laporan Tabel

  1. Di Power BI, pilih laporan Tabel di bawah Visualisasi.

    Cuplikan layar pilihan Visualisasi dan Bidang Power BI untuk laporan tabel Rollup.

  2. Tambahkan bidang berikut ke Kolom dalam urutan yang ditunjukkan:

    • WorkItemI, pilih Jangan ringkas untuk menampilkan ID jika diperlukan
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

Contoh laporan ditampilkan.

Cuplikan layar laporan matriks rollup Fitur Sampel.