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.
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 EntityType
elementu .
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.
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.
- Wybierz kolumnę, klikając nagłówek kolumny.
- Wybierz menu Przekształć.
- Wybierz pozycję Zamień wartości. Zostanie wyświetlone okno dialogowe Zamień wartości .
- Wprowadź wartość "null" w polu Wartość, aby znaleźć.
- Wprowadź "0" w polu Zamień na.
- 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.
Utwórz raport tabeli
W usłudze Power BI wybierz raport Tabela w obszarze Wizualizacje.
Dodaj następujące pola do kolumn w podanej kolejności:
-
WorkItemI
wybierz 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.
Powiązane artykuły
- Eksplorowanie przykładowych raportów przy użyciu zapytań OData
- Konstruowanie zapytań OData na potrzeby analizy
- Nawiązywanie połączenia z usługą Power BI przy użyciu zapytań OData
- Zapoznaj się z metadanymi usługi Azure Boards Analytics
- Uzyskiwanie dostępu do przykładowych raportów i szybkiego indeksu referencyjnego
- Dodawanie fragmentatora zespołu do istniejącego raportu