Udostępnij za pośrednictwem


Zbiorcze wartości podrzędnych elementów roboczych do nadrzędnego przykładowego raportu

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Funkcja zbiorcza zapewnia obsługę wyświetlania liczby elementów roboczych lub sumy Punktów Historii, Pracy Pozostałej albo innego pola niestandardowego w elementach podrzędnych. Ten artykuł zawiera kilka przykładów generowania tabelarycznego raportu zbiorczego dla epików, funkcji lub scenariuszy użytkownika zawierających podrzędne elementy robocze. Na poniższej ilustracji przedstawiono przykład Punktów Story zsumowanych dla Funkcji nadrzędnych.

Zrzut ekranu przedstawiający raport macierzy funkcji.

Aby uzyskać więcej informacji na temat zestawienia i opcji wyświetlania zestawienia, zobacz Wyświetlanie postępu zestawienia lub sum w usłudze Azure Boards.

Uwaga

W tym artykule założono, że zapoznałeś się z dokumentem Omówienie przykładowych raportów przy użyciu zapytań OData oraz że masz podstawową wiedzę na temat usługi Power BI.

Kategoria Wymagania
poziomy dostępu - Członek projektu.
— Co najmniej podstawowy dostęp.
Uprawnienia użytkownika Domyślnie członkowie projektu mają uprawnienia do wykonywania zapytań w usłudze Analytics i tworzenia widoków. Aby uzyskać więcej informacji na temat innych wymagań wstępnych dotyczących włączania usługi i funkcji oraz ogólnych działań śledzenia danych, zobacz Uprawnienia i wymagania wstępne dotyczące dostępu do analizy.

Przykładowe zapytania

Następujące zapytania zwracają dane z WorkItems zestawu jednostek w celu wspierania generowania raportów z macierzy zestawień.

Uwaga

Aby określić dostępne właściwości dla celów filtru lub raportu, zobacz Dokumentacja metadanych dla usługi Azure Boards. Możesz filtrować zapytania lub zwracać właściwości przy użyciu dowolnej z Property wartości dostępnych w elemencie EntityType lub NavigationPropertyBinding Path wartości dostępnych z EntitySet. Każda z nich EntitySet odpowiada elementowi EntityType. Aby uzyskać więcej informacji na temat typu danych każdej wartości, zapoznaj się z metadanymi podanymi dla odpowiedniego EntityTypeelementu .

Scenariusz zbiorczy wskazuje funkcje podrzędnych scenariuszy użytkownika na podstawie ścieżki obszaru

Skopiuj i wklej następujące zapytanie Power BI bezpośrednio w oknie Pobierz dane>Puste zapytanie. Aby uzyskać więcej informacji, zobacz Omówienie przykładowych raportów przy użyciu zapytań 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

Łańcuchy podstawienia i analiza zapytań

Zastąp następujące ciągi wartościami. Nie dołączaj nawiasów {} do podstawienia. Na przykład jeśli nazwa organizacji to "Fabrikam", zastąp {organization}ciąg Fabrikam , a nie {Fabrikam}.

  • {organization} — Nazwa organizacji
  • {project} — Nazwa projektu zespołowego lub całkowicie pomiń "/{project}" dla zapytania obejmującego wiele projektów
  • {areapath} — Ścieżka obszaru. Przykładowy format: Project\Level1\Level2.

Podział zapytań

W poniższej tabeli opisano każdą część zapytania.

Część kwerendy

Opis

$filter=WorkItemType eq 'Feature'

Funkcje zwrotu.

and State ne 'Cut'

Pomiń zamknięte usterki.

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

Zwraca elementy robocze w ramach określonej ścieżki obszaru, a zastąpienie Area/AreaPath eq '{areapath}' zwraca elementy w określonej ścieżce obszaru. Aby filtrować według nazwy zespołu, użyj instrukcji Teams/any(x:x/TeamName eq '{teamname})'filter .

and Descendants/any()

Uwzględnij wszystkie funkcje, nawet te bez scenariuszy użytkownika. Zastąp ciąg "any(d:d/WorkItemType eq 'User Story')", aby pominąć funkcje, które nie mają podrzędnych scenariuszy użytkownika.

&$select=WorkItemId, Title, WorkItemType, State

Wybierz pola, które mają być zwracane.

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

Wybierz pola właściwości z możliwością rozwinięcia: AssignedTo, Iteration, Area.

Descendants(

Rozwiń klauzulę Descendants .

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

Filtruj elementy podrzędne, aby uwzględniały tylko historyjki użytkownika (pomija zadania i usterki).

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

Dla wszystkich elementów potomnych pasujących do klauzuli filter zliczaj je i sumuj StoryPoints właściwość.

)

Zamknij Descendants().

Zestawienie punktów historyjek dla funkcji podrzędnych historyjek użytkownika według zespołów

Poniższe zapytania pokazują, jak generować raporty zestawień z filtrowaniem według nazwy zespołu zamiast ścieżki obszaru.

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio w oknie Get Data>Puste zapytanie. Aby uzyskać więcej informacji, zobacz Omówienie przykładowych raportów przy użyciu zapytań 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

Sumowanie punktów historii do epików

W poniższych zapytaniach można sumować punkty historyczne do Epików.

Skopiuj i wklej następujące zapytanie Power BI bezpośrednio w oknie Pobierz dane>Puste zapytanie. Aby uzyskać więcej informacji, zobacz Omówienie przykładowych raportów przy użyciu zapytań 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

Zestawienie pozostałej i ukończonej pracy do historyjek użytkownika

Poniższe zapytanie pokazuje, jak zestawić pozostałą pracę i wykonaną pracę przydzieloną do podrzędnych zadań i powiązać je z scenariuszami użytkownika w hierarchii. Te zapytania zakładają, że zadania są przypisywane jako elementy podrzędne scenariusza użytkownika w określonej ścieżce obszaru.

Skopiuj i wklej następujące zapytanie Power BI bezpośrednio w oknie Pobierz dane>Puste zapytanie. Aby uzyskać więcej informacji, zobacz Omówienie przykładowych raportów przy użyciu zapytań 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

Liczba usterek podsumowana według cech

Poniższe zapytania pokazują, jak utworzyć zestawienie liczby usterek przypisanych do funkcji. Te zapytania zakładają, że błędy są zdefiniowane jako elementy podrzędne cechy w określonej ścieżce obszaru.

Skopiuj i wklej następujące zapytanie Power BI bezpośrednio w okno Pobieranie danych>Puste zapytanie. Aby uzyskać więcej informacji, zobacz Omówienie przykładowych raportów przy użyciu zapytań 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

(Opcjonalnie) Zmienianie nazwy zapytania

Możesz zmienić nazwę domyślnej etykiety zapytania Query1 na bardziej zrozumiałą. Po prostu wprowadź nową nazwę w okienku Ustawienia zapytania.

Zrzut ekranu przedstawiający opcje menu zapytania usługi Power BI, zmień nazwę zapytania.

Rozwijanie kolumn w usłudze Power BI

Klauzula &$expand=AssignedTo($select=UserName), Iteration($select=IterationPath), Area($select=AreaPath) zwraca rekordy zawierające kilka pól. Przed utworzeniem raportu należy rozwinąć rekord, aby przekształcić go w określone pola. W tym przypadku należy rozwinąć następujące rekordy:

  • AssignedTo
  • AreaPath
  • IterationPath

Aby dowiedzieć się, jak to zrobić, zobacz Transform Analytics data to generate Power BI reports (Przekształcanie danych analizy w celu generowania raportów usługi Power BI).

(Opcjonalnie) Zmienianie nazwy pól

Po rozwinięciu kolumn możesz zmienić nazwę co najmniej jednego pola. Możesz na przykład zmienić nazwę kolumny AreaPath na Area Path. Aby dowiedzieć się, jak to zrobić, zobacz Zmienianie nazwy pól kolumn.

Zamień wartości null w polach podsumowania

Jeśli element roboczy nie ma żadnych elementów podrzędnych, wartość zestawienia może być pusta. Na przykład, Descendants.CountOfUserStories ma wartość "null", jeśli Funkcja nie ma żadnych podrzędnych historyjek użytkowników.

Aby ułatwić raportowanie, zastąp wszystkie wartości null wartością zero, wykonując następujące kroki.

  1. Wybierz kolumnę, klikając nagłówek kolumny.
  2. Wybierz menu Przekształć.
  3. Wybierz pozycję Zamień wartości. Zostanie wyświetlone okno dialogowe Zamień wartości .
  4. Wprowadź wartość "null" w polu Wartość, aby znaleźć.
  5. Wprowadź "0" w polu Zamień na.
  6. Wybierz pozycję OK.

Powtórz dla wszystkich kolumn zestawienia.

Zamknij zapytanie i zastosuj zmiany

Po zakończeniu wszystkich przekształceń danych wybierz pozycję Zamknij i zastosuj z menu Narzędzia główne , aby zapisać zapytanie i wrócić do karty Raport w usłudze Power BI.

Zrzut ekranu Edytora Power Query, opcja Zamknij i Zastosuj.

Utwórz raport tabeli

  1. W usłudze Power BI wybierz raport Tabela w obszarze Wizualizacje.

    Zrzut ekranu przedstawiający wybory Wizualizacji i Pól w Power BI dla raportu tabeli podsumowującej.

  2. Dodaj następujące pola do kolumn w podanej kolejności:

    • WorkItemIwybierz pozycję Nie sumuj , aby w razie potrzeby pokazać identyfikator
    • WorkItemType
    • Title
    • State
    • Count of User Stories
    • Total Story Points.

Zostanie wyświetlony przykładowy raport.

Zrzut ekranu przedstawiający przykładowy raport macierzy zestawienia funkcji.