Alt iş öğesi değerlerini üst örnek rapora toplama

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

Toplama, iş öğelerinin sayısını veya İçerik Noktaları, Kalan Çalışma veya diğer özel alt öğe alanlarının toplamını gösterme desteği sağlar. Bu makalede, alt iş öğeleri içeren Epic'ler, Özellikler veya Kullanıcı Hikayeleri için tablosal toplama raporu oluşturma hakkında çeşitli örnekler sağlanmaktadır. Aşağıdaki görüntüde, üst Özellikleri için toplanmış Hikaye Noktaları ö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.

Önkoşullar

  • Erişim: En az Temel erişimi olan bir projenin üyesi olun.
  • İ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, toplama matrisi raporlarının oluşturulmasını WorkItems desteklemek için varlık kümesinden veri döndürür.

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 ile kullanılabilen EntitySetveya NavigationPropertyBinding Path değerlerinin Property altındaki EntityType değerlerden herhangi birini kullanarak özellikleri 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 Yolunu Temel Alan Temelinde Alt Kullanıcı Hikayelerinin Özelliklerine Yönelik Hikaye İşaretlerini 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 kullanın. Değiştirmenize köşeli ayraç {} eklemeyin. Örneğin, kuruluşunuzun adı "Fabrikam" ise yerine {organization} Fabrikamyerine değerini {Fabrikam}yazın.

  • {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ı atla.

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

Belirli bir Alan Yolu altında iş öğelerini döndür, değiştirerek Area/AreaPath eq '{areapath}' belirli bir Alan Yolundaki öğ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 olmayan özellikler dahil tüm Özellikleri dahil edin. Alt Kullanıcı Hikayeleri olmayan Özellikleri atlamak için değerini "any(d:d/WorkItemType eq 'User Story')" ile değiştirin.

&$select=WorkItemId, Title, WorkItemType, State

Döndürülecek alanları seçin.

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

, , IterationAreagenişletilebilir özellik alanlarını AssignedToseçin.

Descendants(

Yan tümcesini Descendants genişletin.

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

Alt öğeleri yalnızca Kullanıcı Öykülerini 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 özelliğinin toplamını sağlayın StoryPoints .

)

Descendants() öğesini kapatın.

Teams'i Temel Alan Alt Kullanıcı Hikayelerinin Özelliklerine Yönelik Hikaye İşaretlerini Toplama

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 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 (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 işaretlerini Epic'lere paketleyebilirsiniz.

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

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 tolere edileceğ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 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 '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

Özellikler için Toplama Hatası sayısı

Aşağıdaki sorgular, Özelliklere atanan Hataların sayısını toplama işlemini 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. Raporu oluşturmadan önce, kaydı belirli alanlara düzleştirmeniz için genişletmeniz gerekir. 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 AreaPath Area 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ştirme

Bir iş öğesinin alt öğesi yoksa toplama değeri null 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'e "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.

    Toplama 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çin
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

Örnek rapor görüntülenir.

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