Aracılığıyla paylaş


Alt iş öğesi değerlerini üst öğe örnek raporuna birlikte toplama

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Rollup özelliği, iş öğeleri sayısını veya Hikaye Puanları, Kalan Çalışma veya çocuk öğelerin diğer özel alanlarının toplamını gösterme desteği sağlar. Bu makale, alt iş öğeleri içeren Epic'ler, Özellikler veya Kullanıcı Hikayeleri için tablo şeklinde bir toplama raporu oluşturma konusunda çeşitli örnekler sunmaktadır. Aşağıdaki görüntüde, ebeveyn Özellikleri için bir araya getirilen Hikaye Noktalarının bir örneği gösterilmektedir.

Özellik toplama matrisi raporunun ekran görüntüsü.

Toplama ve toplamayı gösterme seçenekleri hakkında daha fazla bilgi için bkz . Azure Boards'ta toplama ilerlemesini veya toplamlarını görüntüleme.

Not

Bu makalede, OData Sorguları kullanarak Örnek Raporlara Genel Bakış makalesini okuduğunuz ve Power BI hakkında temel bilgilere sahip olduğunuz varsayılır.

Kategori Gereksinimler
Erişim seviyeleri - Proje Üyesi.
- En az Temel erişim.
İzinler Varsayılan olarak, proje üyeleri Analytics'i sorgulama ve görünüm oluşturma iznine sahiptir. Hizmet ve özellik etkinleştirme ve genel veri izleme etkinlikleriyle ilgili diğer önkoşullar hakkında daha fazla bilgi için bkz . Analytics'e erişim izinleri ve önkoşulları.

Örnek sorgular

Aşağıdaki sorgular, WorkItems varlık kümesinden veri döndürerek toplama matrisi raporlarının oluşturulmasını destekler.

Not

Filtre veya rapor amacıyla kullanılabilir özellikleri belirlemek için bkz. Azure Boards için Meta Veri Başvurusu. Sorgularınızı filtreleyebilir veya EntitySet ile kullanılabilen Property veya EntityType değerleri ya da NavigationPropertyBinding Path değerleri kullanarak özellikleri geri döndürebilirsiniz. Her EntitySet bir EntityTypeöğesine karşılık gelir. Her değerin veri türü hakkında daha fazla bilgi için ilgili EntityTypeiçin sağlanan meta verileri gözden geçirin.

Alan Yolu Temeline Dayanarak Alt Kullanıcı Hikayelerinin Özelliklerine Hikaye Puanlarını Toplama

Aşağıdaki Power BI sorgusunu kopyalayıp doğrudan Veri Al>Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.

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

Değiştirme dizeleri ve sorgu dökümü

Aşağıdaki dizeleri değerlerinizle değiştirin. Değiştirme işleminizde köşeli ayraç {} eklemeyin. Örneğin, kuruluşunuzun adı "Fabrikam" ise, {organization} yerine Fabrikam yazın, {Fabrikam} değil.

  • {organization} - Kuruluşunuzun adı
  • {project} - Çapraz proje sorgusu için ekip projenizin adı veya "/{project}" ifadesini tamamen atla
  • {areapath} - Alan Yolunuz. Örnek biçim: Project\Level1\Level2.

Sorgu dökümü

Aşağıdaki tabloda sorgunun her bölümü açıklanmaktadır.

Sorgu bölümü

Açıklama

$filter=WorkItemType eq 'Feature'

Dönüş Özellikleri.

and State ne 'Cut'

Kapalı hataları göz ardı et.

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

Belirli bir Alan Yolu altında iş öğelerini döndür, burada Area/AreaPath eq '{areapath}' ifadesinin yerine geçerek belirli bir Alan Yolunda öğeleri döndürür. Takım Adına göre filtrelemek için filter deyimini Teams/any(x:x/TeamName eq '{teamname})'kullanın.

and Descendants/any()

Kullanıcı Hikayeleri olmayanlar da dahil tüm Özellikleri ekleyin. "Kullanıcı Hikayeleri" olmayan Özellikleri atlamak için ifadesini "any(d:d/WorkItemType eq 'User Story')" ile değiştirin.

&$select=WorkItemId, Title, WorkItemType, State

Geri döndürülecek alanları seçin.

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

Genişletilebilir özellik alanlarını AssignedTo, Iteration, Area seçin.

Descendants(

Descendants maddesini genişletin.

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

Alt elemanları yalnızca Kullanıcı Hikayelerini içerecek şekilde filtreleyin (görevleri ve hataları atlar).

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

Filtre yan tümcesi ile eşleşen tüm alt öğeler için bunları sayın ve StoryPoints özelliğin toplamını alın.

)

Descendants() öğesini kapatın.

Ekipler Bazında Alt Kullanıcı Hikayelerinin Özelliklerine Hikaye Puanlarını Topla

Aşağıdaki sorgularda, Alan Yolu yerine ekip adına göre filtreleyen toplama raporlarının nasıl oluşturulacağı gösterilmektedir.

Aşağıdaki Power BI sorgusunu kopyalayıp Veri Al>Boş Sorgu penceresine doğrudan yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.

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

Epic'lere Hikaye İşaretleri Toplama

Aşağıdaki sorguları kullanarak hikaye puanlarını Epiklere toplayabilirsiniz.

Aşağıdaki Power BI sorgusunu kopyalayıp doğrudan Veri Al>Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.

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

Kalan Çalışma ve Tamamlanan Çalışmayı Kullanıcı Öykülerine Toplama Görevleri

tr-TR: Aşağıdaki sorgu, hiyerarşideki Kullanıcı Hikayeleri'ne alt Görevlere atanan Kalan Çalışma ve Tamamlanan Çalışma'nın nasıl özetleneceğini gösterir. Bu sorgular, Görevlerin belirtilen Alan Yolunda bir Kullanıcı Hikayesi'nin alt öğeleri olarak atandığını varsayar.

Aşağıdaki Power BI sorgusunu kopyalayıp Veri Al>Boş Sorgu penceresine doğrudan yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.

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

Özelliklere Hata Sayısı Toplamı

Aşağıdaki sorgular, Özelliklere atanan Hataların sayısını toplu olarak nasıl sayacağınızı gösterir. Bu sorgular Hataların belirtilen Alan Yolundaki bir Özelliğin alt öğeleri olarak tanımlandığını varsayar.

Aşağıdaki Power BI sorgusunu kopyalayıp doğrudan Veri Al>Boş Sorgu penceresine yapıştırın. Daha fazla bilgi için bkz . OData sorgularını kullanan örnek raporlara genel bakış.

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

(İsteğe bağlı) Sorguyu yeniden adlandırma

Varsayılan sorgu etiketi olan Query1'i daha anlamlı bir şekilde yeniden adlandırabilirsiniz. Sorgu Ayarları bölmesinden yeni bir ad girmeniz yeterlidir.

Power BI sorgu menüsü seçeneklerinin ekran görüntüsü, sorguyu yeniden adlandırma.

Power BI'da sütunları genişletme

yan tümcesi &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath) , birkaç alan içeren kayıtları döndürür. Belirli alanlara düzleştirmek için kaydı genişletmeniz gerekmektedir; bu işlemi gerçekleştirdikten sonra raporu oluşturabilirsiniz. Bu örnekte, aşağıdaki kayıtları genişletmek isteyeceksiniz:

  • AssignedTo
  • AreaPath
  • IterationPath

Nasıl yapılacağını öğrenmek için bkz . Power BI raporları oluşturmak için Analiz verilerini dönüştürme.

(İsteğe bağlı) Alanları yeniden adlandırma

Sütunları genişlettikte, bir veya daha fazla alanı yeniden adlandırmak isteyebilirsiniz. Örneğin, sütunu AreaPathArea Patholarak yeniden adlandırabilirsiniz. Nasıl yapılacağını öğrenmek için bkz . Sütun alanlarını yeniden adlandırma.

Toplama alanlarındaki null değerleri değiştir

Bir iş öğesinin alt öğesi yoksa, toplama değeri "null" (boş) olabilir. Örneğin, bir Özelliğin alt Kullanıcı Hikayeleri yoksa Descendants.CountOfUserStories "null" olur.

Daha kolay raporlama için aşağıdaki adımları izleyerek tüm null değerleri sıfırla değiştirin.

  1. Sütun üst bilgisine tıklayarak sütunu seçin.
  2. Dönüştür menüsünü seçin.
  3. Değerleri Değiştir'i seçin. Değerleri Değiştir iletişim kutusu görüntülenir.
  4. Bulunacak Değer alanına "null" yazın.
  5. Şununla değiştir alanına "0" girin.
  6. Tamam'ı seçin.

Tüm toplama sütunları için bu işlemi yineleyin.

Sorguyu kapatma ve değişikliklerinizi uygulama

Tüm veri dönüşümlerinizi tamamladıktan sonra, sorguyu kaydetmek ve Power BI'daki Rapor sekmesine dönmek için Giriş menüsünden Kapat ve Uygula'yı seçin.

Kapat ve Uygula seçeneğinin Power Query Düzenleyicisi ekran görüntüsü.

Tablo raporunu oluşturma

  1. Power BI'da Görselleştirmeler'in altındaki Tablo raporunu seçin.

    Rollup Tablosu raporu için Power BI Görselleştirmeleri ve Alanlar seçimlerinin ekran görüntüsü.

  2. Sütunlar'a aşağıdaki alanları belirtilen sırayla ekleyin:

    • WorkItemI, gerekirse kimliği göstermek için Özetleme'yi seçmeyin
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

Örnek rapor görüntülenir.

Örnek Özellik Kümesi matris raporunun ekran görüntüsü.