Udostępnij za pośrednictwem


Przykładowe zapytania i raporty dotyczące wydań

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

Raporty burndown i burnup pokazują, ile pracy jest ukończone w czasie. Na poniższej ilustracji przedstawiono wypalenie zarówno według liczby scenariuszy użytkownika, jak i sumy punktów scenariuszy.

Zrzut ekranu przedstawiający raport wykresu kolumnowego grupowanego w wersji usługi Power BI.

Wykresy burndown mają sens tylko wtedy, gdy planujesz pracę na okres wykresu. W przeciwnym razie, jeśli planujesz przebieg po przebiegu, nie zobaczysz standardowego postępu. W tych przypadkach wykres spalony ma większe znaczenie, aby zobaczyć, jak postęp jest w czasie.

Ważne

  • Usunięcie ścieżek obszaru lub ponowne skonfigurowanie ścieżek iteracji powoduje nieodwracalną utratę danych. Na przykład wykresy z widżetami burndown i burnup, burndown i velocity charts dla zespołów ze zmienionymi ścieżkami obszaru nie będą wyświetlać dokładnych danych. Historyczne wykresy trendów odwołują się do ścieżki obszaru i ścieżki iteracji, ponieważ zostały one zdefiniowane w czasie dla każdego elementu roboczego. Po usunięciu nie można pobrać danych historycznych dla tych ścieżek.
  • Można usuwać tylko ścieżki obszaru i iteracji, które nie są już używane przez żadne elementy robocze.

Aby uzyskać więcej informacji na temat burndown i burnup, zobacz Configure a burndown or burnup widget and Burndown and burnup guidance (Konfigurowanie widżetu spalania lub burnup) oraz Burndown and burnup guidance (Wskazówki dotyczące burndown i burnup).

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

Zapytania w tej sekcji pokazują, jak generować wykresy postępu elementów roboczych na podstawie danych historycznych. Wszystkie te zapytania określają WorkItemSnapshot zestaw jednostek.

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 .

Burndown of User Stories in an area path from start and end date (Wypalenie scenariuszy użytkownika w ścieżce obszaru od daty rozpoczęcia i zakończenia)

Poniższe zapytanie pokazuje, jak zwracać dane historyczne scenariuszy użytkownika dla wydania na podstawie elementów roboczych oznaczonych tagiem wydania.

Uwaga

W przypadku raportów opartych na filtrowaniu tagu tag musi być przypisany do elementu roboczego na początku wydania lub daty rozpoczęcia wypalenie/spalenie. W przeciwnym razie element roboczy nie jest uwzględniony w zwracanych danych.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, 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 pomiń "/{project}" dla zapytania obejmującego wiele projektów
  • {areapath} — Ścieżka obszaru. Przykładowy format: Project\Level1\Level2
  • {tag} — tag reprezentujący wydanie. Wszystkie elementy robocze oznaczone tagiem {tagname} są uwzględnione w raporcie
  • {startdate} - Data rozpoczęcia raportu o burndown z formatem: YYYY-MM-DDZ. Na przykład: 2022-04-01Z reprezentuje 2022-Kwiecień-01. Nie ujęć w cudzysłów.
  • {enddate} — Data zakończenia raportu o burndown.

Podział zapytań

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

Część kwerendy

Opis

$apply=filter(WorkItemType eq 'User Story'

Uwzględnij scenariusze użytkownika w zamknięciu.

and StateCategory ne 'Completed'

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

Uwzględnij tylko scenariusze użytkownika w ramach określonej ścieżki obszaru zastępującej '{areapath}'element .
Aby filtrować według nazwy zespołu, użyj instrukcji Teams/any(x:x/TeamName eq '{teamname})'filter .

and Tags/any(x:x/TagName eq '{tagname}').

Określa etykietę tagu reprezentującą wydanie, w ramach którego ma być włączane, oraz uwzględnia wszystkie elementy robocze oznaczone tagiem {tagname} w raporcie.

and DateValue ge {startdate}

Rozpocznij uruchamianie w dniu lub po określonej dacie. Przykład: 2019-04-01Z reprezentuje 2019-Kwiecień-01.

and DateValue le {enddate}

Rozpocznij spalenie w określonym dniu lub przed określoną datą. Taki sam format jak {startdate}.

)

Zamknij filter() klauzulę.

/groupby (

Klauzula Start groupby() .

(DateValue, State, Area/AreaPath),

Grupuj według DateValue (używane do trendów) i wszystkie pola, na których chcesz raportować.

aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints)

Agregowanie według liczby historii użytkowników i sumy punktów scenariuszy.

)

Zamknij groupby() klauzulę.

Burndown of User Stories for a team (Tworzenie scenariuszy użytkowników dla zespołu)

Poniższe zapytanie zwraca dane ze spalania przefiltrowane 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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"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 Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Scenariusze użytkownika burndown z migawką co piątek

Użycie cotygodniowej migawki zmniejsza ilość danych ściągniętych do usługi Power BI i zwiększa wydajność zapytań.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and Tags/any(x:x/TagName eq '{tagname}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &"and Date/DayName eq 'Friday' "
        &") "
        &"/groupby ( "
            &"(DateValue,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Scenariusze użytkownika burndown na podstawie obszaru i ścieżki iteracji

Niektóre organizacje używają ścieżek iteracji do oznaczania scenariuszy dla wydania. Na przykład mogą mieć ścieżkę iteracji MyProject\Release1. Poniższe zapytanie pokazuje, jak wybrać pozycję Scenariusze użytkownika według ścieżki iteracji.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and startswith(Iteration/IterationPath,'{iterationpath}') "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Scenariusze użytkownika burndown z wartością pola niestandardowego

Niektóre organizacje używają pola niestandardowego do oznaczania scenariuszy użytkownika dla wydania. Na przykład mogą mieć pole o nazwie Kamień milowy. To zapytanie pokazuje, jak wybrać pozycję Scenariusze użytkownika według pola niestandardowego.

Musisz zastąpić zarówno zapytanie, jak {customfieldname} i {releasevalue} w zapytaniu. Aby określić nazwę pola niestandardowego, zobacz Dokumentacja metadanych dla usługi Azure Boards, właściwości niestandardowych. Zastąp {customfieldname} ciąg nazwą właściwości niestandardowej, na przykład Custom_Milestone.

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/WorkItemSnapshot?"
        &"$apply=filter(WorkItemType eq 'User Story' "
            &"and StateCategory ne 'Completed' "
            &"and startswith(Area/AreaPath,'{areapath}') "
            &"and {customfieldname} eq '{releasevalue}' "
            &"and DateValue ge {startdate} "
            &"and DateValue le {enddate} "
            &") "
        &"/groupby ( "
            &"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
            &"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
        &") "
    ,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 Edytor Power Query

Przed utworzeniem raportu należy rozwinąć kolumny zwracające rekordy zawierające kilka pól. W tym przypadku należy rozwinąć następujące rekordy:

  • Links
  • Links.TargetWorkItem
  • Area
  • Iteration
  • AssignedTo

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

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 klastrowanego wykresu kolumnowego

  1. W usłudze Power BI wybierz pozycję Wykres kolumnowy grupowany w obszarze Wizualizacje.

    Zrzut ekranu przedstawiający opcje Wizualizacje i Pola usługi Power BI dla raportu wykresu kolumnowego grupowanego wydań.

  2. Dodaj DateValue do osi X, kliknij prawym przyciskiem myszy i wybierz polecenie DateValue, a nie Date Hierarchy

  3. Dodaj Count do osi Y.

  4. Dodaj TotalStoryPoints do osi Y.

Przykładowy raport wyświetla zestawienie liczby scenariuszy i sum lub Story Points.

Zrzut ekranu przedstawiający przykładowy raport wykresu kolumnowego grupowanego wydania usługi Power BI.