Udostępnij za pośrednictwem


Przykładowy raport zestawienia postępu funkcji

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

W tym artykule pokazano, jak utworzyć skumulowany raport słupkowy w celu wyświetlenia postępu funkcji na podstawie ukończonych podrzędnych scenariuszy użytkownika. W raporcie jest wyświetlana wartość procentowa ukończona przez zestawienie punktów scenariuszy dla danego zestawu aktywnych funkcji. Przykład pokazano na poniższej ilustracji.

Zrzut ekranu przedstawiający raport wykresu słupkowego z postępem funkcji.

Podobne wykresy słupkowe postępu można wyświetlić z listy prac, dodając kolumnę zestawienia. Aby dowiedzieć się, jak to zrobić, zobacz Wyświetlanie postępu zestawienia lub sum.

Uwaga

W tym artykule założono, że zapoznasz się z omówieniem przykładowych raportów przy użyciu zapytań OData i masz podstawową wiedzę na temat usługi Power BI.

Wymagania wstępne

Przykładowe zapytania

Postęp funkcji wysyła zapytanie do jednostki, WorkItems aby uzyskać bieżący stan postępu.

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 EntityType w elemecie EntitySetlub NavigationPropertyBinding Path . 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 .

Przeglądanie postępu funkcji na podstawie ścieżki obszaru

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio w oknie Pobieranie pustego >zapytania. 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,Area,Iteration,AssignedTo,WorkItemType,State,AreaSK"
            &"&$expand=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') " 
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Ciągi podstawienia i podział 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 Fabrikamciąg {organization} , a nie {Fabrikam}.

  • {organization} — Nazwa organizacji
  • {project} — Nazwa projektu zespołowego lub całkowicie pominięta /{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 zwracane.

and State ne 'Cut'

Pomiń funkcje oznaczone jako Wytnij.

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

Zwracanie elementów roboczych w ramach określonej ścieżki obszaru. Zamienianie na Area/AreaPath eq '{areapath}' elementy zwracane 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()

Odfiltruj wszystkie elementy robocze, które mają co najmniej jeden element podrzędny lub "dowolny". Zawiera wszystkie funkcje z co najmniej jednym podrzędnym elementem roboczym. Aby pobrać wszystkie elementy robocze ze swoimi elementami podrzędnymi, nawet jeśli nie mają żadnych elementów podrzędnych, uruchom zapytanie bez filtru Descendants/any() . Aby pominąć funkcje, które nie mają podrzędnych scenariuszy użytkownika, zastąp element .any(d:d/WorkItemType eq 'User Story')

Dla wszystkich elementów roboczych z elementami podrzędnymi i bez elementów podrzędnych:

$filter=endswith(Area/AreaPath,'suffix')
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

Dla wszystkich elementów roboczych z co najmniej jednym elementem potomnymi:

$filter=endswith(Area/AreaPath, 'suffix')and Descendants/any()
&$select=WorkItemId,Title,WorkItemType,State,Area, Descendants
&$expand=Descendants($select=WorkItemId)

&$select=WorkItemId, Title, WorkItemType, State

Wybierz właściwości do zwrócenia.

&$expand=Descendants(

Początek klauzuli expand Descendants

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

Filtruj elementy podrzędne. Obejmują tylko scenariusze użytkownika (pomijanie zadań i usterek).

/groupby((StateCategory),

Grupuj zestawienie według stateCategory. Aby uzyskać więcej informacji na temat kategorii stanów, zobacz How workflow states and state categories are used in Backlogs and Boards (Jak są używane stany przepływu pracy i kategorie stanów w listach prac i tablicach).

aggregate(StoryPoints with sum as TotalStoryPoints))

Suma zagregowanych punktów historii.

)

Zamknij Descendants() klauzulę.

Przeglądanie postępu funkcji dla zespołu

Poniższe zapytanie jest takie samo jak użyte powyżej, z wyjątkiem filtrów według nazwy zespołu, a nie ścieżki obszaru.

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio w oknie Pobieranie pustego >zapytania. 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=Descendants( "
            &"$apply=filter(WorkItemType eq 'User Story') "
                &"/groupby((StateCategory), "
                &"aggregate(StoryPoints with sum as TotalStoryPoints)) "
            &")  "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Przekształcanie danych w Edytor Power Query

Zapytanie zwraca kilka kolumn, które należy rozwinąć, zanim będzie można ich użyć do utworzenia raportu. Każda jednostka ściągana przy użyciu instrukcji OData $expand zwraca rekord z potencjalnie kilkoma polami. Rozwiń rekord, aby spłaszczać jednostkę w polach.

W przypadku raportu Postęp funkcji należy wykonać następujące przekształcenia:

  • Rozwiń kolumnę na Descendants dwie kolumny: Descendants.StateCategory i Descendants.TotalStoryPoints
  • Zastosuj przekształcenie kolumny przestawnej w Descendants.StateCategory kolumnie, aby oddzielić poszczególne kategorie stanów
  • Zastąp wartości null we wszystkich kolumnach przestawnych.
  • Dodaj kolumnę niestandardową, aby reprezentować procent wykonania. Kolumna niestandardowa wyświetli błędy, jeśli w kolumnach stanu przestawnego znajdują się jakiekolwiek kolumny o wartości null.

Aby dowiedzieć się, jak to zrobić, zobacz następujące sekcje w temacie Przekształcanie danych analizy w celu generowania raportów usługi Power BI:

Uwaga

W tym przykładzie wartości State dla scenariusza użytkownika obejmują Proponowane, W toku i Ukończone.

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 przedstawiający opcję zamknij i zastosuj Edytor Power Query.

Tworzenie skumulowanego raportu wykresu słupkowego

  1. W usłudze Power BI wybierz pozycję Skumulowany raport wykresu słupkowego w obszarze Wizualizacje.

    Zrzut ekranu przedstawiający opcje Wizualizacje i Pola usługi Power BI dla raportu skumulowanego wykresu słupkowego postępu funkcji.

  2. Dodaj Title do osi Y.

  3. Dodaj PercentComplete do osi X, kliknij prawym przyciskiem myszy i wybierz pozycję Suma.

Zostanie wyświetlony przykładowy raport.

Zrzut ekranu przedstawiający raport wykresu słupkowego w stosie przykładowej funkcji.