Udostępnij za pośrednictwem


Agregowanie danych śledzenia pracy przy użyciu analizy

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

Możesz uzyskać sumę danych śledzenia pracy na jeden z dwóch sposobów, korzystając z 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 rozszerzenie agregacji OData.

W tym artykule przedstawiono informacje zawarte w temacie Konstruowanie zapytań OData na potrzeby 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 usług 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 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 dla usługi Azure DevOps Server 2020 i nowszych wersji. 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 opinii. W przypadku uaktualnienia z usługi 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 usługi Azure DevOps Server 2019. Możesz 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 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 do tworzenia zapytań dotyczących 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, która musi być odpytywana dla
  • {columnToAggregate} to kolumna agregacji
  • Element {aggregationType} określi typ używanej agregacji
  • {newColumnName} określa nazwę kolumny o wartościach po agregacji.

Zagregowane dane przy użyciu rozszerzenia apply

$apply Za pomocą rozszerzenia można uzyskać liczby, 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ą z klauzulą groupby SQL GROUP BY . Tej klauzuli można użyć, aby szybko podzielić liczby bardziej szczegółowo.

Na przykład następująca klauzula 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żna 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 można o tym 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 wykonanie 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żesz również filtrować zagregowane wyniki, jednak są one stosowane nieco inaczej niż w przypadku, gdy nie używasz agregacji. Analiza ocenia filtry wzdłuż potoku, dzięki czemu zawsze najlepiej jest najpierw wykonać najbardziej dyskretne filtrowanie.

Filtry wyglądają następująco:

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 ukończonej pracy i oddzielnie suma pozostałej pracy. W takim przypadku można wykonywać 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ńczonej pracy podzielonej przez sumę ukończonej pracy oraz sumę pozostałej pracy w celu obliczenia procentu wykonanej pracy. W takim przypadku możesz użyć tego 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 tym mniej wierszy jest wymaganych, tym szybciej odbywa się odświeżanie.

Następne kroki