Agregowanie danych śledzenia pracy przy użyciu usługi Analytics

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

Możesz uzyskać sumę danych śledzenia pracy na jeden z dwóch sposobów przy użyciu analizy z usługą OData. Pierwsza metoda zwraca prostą liczbę elementów roboczych na podstawie zapytania OData. Druga metoda zwraca wynik w formacie JSON na podstawie zapytania OData, które wykonuje ćwiczenie rozszerzenia agregacji OData.

Ten artykuł kompiluje informacje zawarte w artykule Konstruowanie zapytań OData dla analizy i Definiowanie podstawowych zapytań przy użyciu analizy OData. Ponadto zapytania dotyczą pobierania danych elementów roboczych, jednak zasady dotyczą wykonywania zapytań dotyczących innych zestawów jednostek.

Z tego artykułu dowiesz się:

  • Informacje o rozszerzeniu agregacji OData
  • Jak używać rozszerzenia agregacji dla OData
  • Jak grupować i filtrować zagregowane wyniki
  • Jak agregować dane w celu wygenerowania diagramu przepływu skumulowanego

Aby dowiedzieć się, jak wygenerować proste liczby, zobacz Zwracanie liczby elementów (bez innych danych) i Zwracanie liczby elementów i danych.

Uwaga

Usługa Analytics jest automatycznie włączona i obsługiwana w środowisku produkcyjnym dla wszystkich Azure DevOps Services. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania nam opinii. Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.

Uwaga

Usługa Analytics jest automatycznie instalowana i obsługiwana w środowisku produkcyjnym dla wszystkich nowych kolekcji projektów w Azure DevOps Server 2020 r. i nowszych wersjach. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania nam opinii. W przypadku uaktualnienia z Azure DevOps Server 2019 możesz zainstalować usługę Analytics podczas uaktualniania.

Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.

Uwaga

Usługa Analytics jest dostępna w wersji zapoznawczej dla Azure DevOps Server 2019 r. Możesz ją włączyć lub zainstalować dla kolekcji projektów. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są dostępne w wersji zapoznawczej. Zachęcamy do korzystania z niego i przekazywania nam opinii.

Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.

Co to jest rozszerzenie agregacji dla OData?

Analiza opiera się na usłudze OData, aby tworzyć zapytania dotyczące danych śledzenia pracy. Agregacje w usłudze OData są osiągane przy użyciu rozszerzenia, które wprowadza $apply słowo kluczowe . Poniżej przedstawiono kilka przykładów użycia tego słowa kluczowego. Dowiedz się więcej o rozszerzeniu w temacie OData Extension for Data Aggregation (Rozszerzenie OData dla agregacji danych).

Agregowanie danych przy użyciu rozszerzenia agregacji OData

Teraz, gdy już wiesz, jak wykonywać proste liczby, zobaczmy, jak wyzwalać agregacje przy użyciu tokenu $apply , w którym podstawowy format na końcu adresu URL jest następujący:

/{entitySetName}?$apply=aggregate({columnToAggregate} with {aggregationType} as {newColumnName})

Gdzie:

  • {entitySetName} to jednostka, o którą należy wykonywać zapytania
  • {columnToAggregate} to kolumna agregacji
  • Element {aggregationType} określi typ użytej agregacji
  • {newColumnName} określa nazwę kolumny, która ma wartości po agregacji.

Zagregowane dane przy użyciu rozszerzenia apply

$apply Za pomocą rozszerzenia można uzyskać liczniki, sumy i dodatkowe informacje podczas wykonywania zapytań dotyczących danych śledzenia pracy.

Zwraca sumę wszystkich pozostałych prac

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(RemainingWork with sum as SumOfRemainingWork)

Zwracanie ostatniego identyfikatora elementu roboczego

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate(WorkItemId with max as MaxWorkItemId)

Grupowanie wyników przy użyciu klauzuli groupby

Rozszerzenie agregacji OData obsługuje również klauzulę identyczną groupby z klauzulą SQL GROUP BY . Możesz użyć tej klauzuli, aby szybko podzielić liczby bardziej szczegółowo.

Na przykład następująca klauzula thie zwraca liczbę elementów roboczych:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=aggregate($count as Count)

Dodaj klauzulę , groupby aby zwrócić liczbę elementów roboczych według typu:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType), aggregate($count as Count))

Zwraca wynik podobny do tego przykładu:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,Count)","value":[
    {
      "@odata.id":null,"WorkItemType":"Bug","Count":3
    },
    {
      "@odata.id":null,"WorkItemType":"Product Backlog Item","Count":13
    }
  ]
}

Możesz również grupować według wielu właściwości, jak w tym przykładzie:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=groupby((WorkItemType, State), aggregate($count as Count))

Zwraca wynik podobny do tego przykładu:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(WorkItemType,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Bug",
      "Count": 2
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Bug",
      "Count": 1
    },
    {
      "@odata.id": null,
      "State": "Active",
      "WorkItemType": "Product Backlog Item",
      "Count": 5
    },
    {
      "@odata.id": null,
      "State": "Committed",
      "WorkItemType": "Product Backlog Item",
      "Count": 8
    }
  ]
}

Można również grupować między jednostkami, jednak grupowanie OData różni się od tego, jak zwykle o tym można myśleć.

Załóżmy na przykład, że chcesz wiedzieć, ile obszarów należy do każdego projektu w organizacji lub kolekcji. W usłudze OData "zlicz wszystkie obszary i pogrupuj je według projektu" jest równoważne "nadaj mi wszystkie projekty i liczbę obszarów dla każdego projektu". Spowoduje to wyświetlenie zapytania podobnego do następującego:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/Areas?
  $apply=groupby((Project/ProjectName), aggregate($count as Count))

Filtrowanie zagregowanych wyników

Można również filtrować zagregowane wyniki, jednak są one stosowane nieco inaczej niż wtedy, gdy nie używasz agregacji. Analiza ocenia filtry wzdłuż potoku, dzięki czemu zawsze najlepiej jest najpierw wykonywać najbardziej dyskretne filtrowanie.

Filtry wyglądają jak w tym przykładzie:

https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/WorkItems?
  $apply=
    filter(Iteration/IterationName eq 'Sprint 89')/
    filter(WorkItemType eq 'User Story')/
    groupby((State), aggregate($count as Count))

Uwaga

Nie musisz podawać klauzuli groupby . Możesz po prostu użyć klauzuli aggregate , aby zwrócić pojedynczą wartość.

Generowanie wielu agregacji w ramach jednego wywołania

Możesz podać wiele informacji. Przykładem jest suma wykonanej pracy i oddzielnie suma pozostałej pracy. W takim przypadku można wykonać oddzielne wywołania lub jedno wywołanie w następujący sposób:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)

Zostanie zwrócony wynik podobny do tego przykładu:

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"SumOfCompletedWork":1525841.2900000005,"SumOfRemainingWork":73842.39
    }
  ]
}

Generowanie właściwości obliczeniowych do użycia w ramach jednego wywołania

Może być konieczne użycie wyrażenia matematycznego do obliczenia właściwości do użycia w zestawie wyników. Przykładem jest suma ukończonych prac podzielonych przez sumę ukończonych prac oraz sumę pozostałych prac w celu obliczenia wartości procentowej wykonanej pracy. W takim przypadku można użyć następującego przykładu:

/WorkItems?$apply=aggregate(CompletedWork with sum as SumOfCompletedWork, RemainingWork with sum as SumOfRemainingWork)/compute(SumOfCompletedWork div (SumOfCompletedWork add SumOfRemainingWork) as DonePercentage)

{
  "@odata.context":"https://analytics.dev.azure.com/{OrganizationName}/_odata/{version}/$metadata#WorkItems(SumOfCompletedWork,SumOfRemainingWork)","value":[
    {
      "@odata.id":null,"DonePercentage":0.96760221857946638,"SumOfRemainingWork":50715.95,"SumOfCompletedWork":1514698.3400000033
    }
  ]
}

Generowanie diagramu przepływu skumulowanego na podstawie zagregowanych danych

Załóżmy, że chcesz utworzyć skumulowany diagram przepływu w usłudze Power BI. Możesz użyć zapytania podobnego do poniższego:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemBoardSnapshot?$apply=filter(DateValue gt 2015-07-16Z and DateValue le 2015-08-16Z)/filter(BoardName eq 'Stories' and Team/TeamName eq '{teamName}')/groupby((DateValue, ColumnName), aggregate(Count with sum as Count))&$orderby=DateValue

Zwraca wynik podobny do tego przykładu. Następnie możesz użyć jej bezpośrednio w wybranej wizualizacji danych.

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemBoardSnapshot(DateValue,ColumnName,Count)",
  "value": [
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 324,
       "ColumnName": "Completed"
    },
    {
      "@odata.id": null,
      "DateValue": "2015-07-16T00:00:00-07:00",
      "Count": 5,
      "ColumnName": "In Progress"
    }
  ]
}

Przyjrzyjmy się temu, co rzeczywiście robi to zapytanie:

  • Filtruje dane do określonego zespołu
  • Filtruje dane do określonej listy prac
  • Zwraca liczbę elementów roboczych.

Podczas odświeżania usługi Power BI lub programu Excel jest wymagana mniejsza liczba wierszy, tym szybciej odbywa się odświeżanie.

Następne kroki