Udostępnij za pośrednictwem


Wykonywanie zapytań dotyczących danych trendu

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

Badanie trendów w danych i porównywanie okresów jest ważnymi aspektami raportowania i analizy danych. Analiza obsługuje te możliwości.

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.

Dane trendu są widoczne w zestawach jednostek WorkItemSnapshot i WorkItemBoardSnapshot. Są one skonstruowane tak, aby każdy element roboczy, od dnia utworzenia do dziś, istnieje dla każdego dnia. W przypadku organizacji z tylko jednym elementem roboczym, który został utworzony rok temu, w tej jednostce znajduje się 365 wierszy. W przypadku dużych projektów te jednostki byłyby niepraktyczne do użycia z narzędziami klienckimi.

Jakie jest rozwiązanie? Użyj rozszerzeń agregacji.

Z tego artykułu dowiesz się:

  • Jak utworzyć podstawowe zapytanie dotyczące danych trendu

Za pomocą rozszerzeń agregacji OData można zwrócić zagregowane dane z usługi Azure DevOps, która sprzyja raportowaniu. Można na przykład pokazać trend błędów dla miesiąca marca. Trendy błędów to wspólna i krytyczna część zarządzania dowolnym projektem, dzięki czemu można ją natychmiast wykorzystać.

Uwaga

Przykłady przedstawione w tym dokumencie są oparte na adresie URL usługi Azure DevOps Services. W adresie URL usługi Azure DevOps Server należy zastąpić adres URL serwera Azure DevOps.

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

Konstruowanie podstawowego zapytania dotyczącego danych trendu

Istnieją pewne podstawowe wymagania, które należy skutecznie wykonywać względem tabeli WorkItemSnapshot:

  • Filtruj dane według daty.
  • Agregacja powinna pogrupować według co najmniej daty. Jeśli nie, odpowiedź będzie zawierać ostrzeżenie.

Zapytanie do utworzenia raportu trendu błędów wygląda następująco:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue,State), aggregate($count as Count))
  &$orderby=DateValue

Zwraca wynik podobny do następującego przykładu:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 2666
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 51408
    }
  ]
}

To zapytanie spowoduje wygenerowanie co najwyżej 31 * (number of bug states). Domyślna usterka ma trzy stany:

  • Aktywne
  • Rozwiązane
  • Zamknięcie

Co najwyżej to zapytanie zwróci 93 wiersze niezależnie od tego, ile tysięcy rekordów rzeczywiście istnieje. Zapewnia ona o wiele bardziej kompaktową formę zwracania danych.

Przyjrzyjmy się odmianie w tym przykładzie. Chcesz zobaczyć trend błędów dla iteracji lub wydania, które zaczyna się od jednej iteracji i kończy się innym.

Aby utworzyć to zapytanie, wykonaj następujący przykład:

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

Zwraca wynik podobny do następującego przykładu:

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 320
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 38
    }
  ]
}

W tym zapytaniu istnieją dwie kluczowe różnice. Dodaliśmy klauzulę filtru, aby filtrować dane do określonej iteracji, a daty są teraz porównywane z datami rozpoczęcia i zakończenia iteracji w porównaniu z datą zakodowaną na bieżąco.

Uwaga

Jeśli agregacja nie jest używana w zapytaniu w tabelach migawek, w odpowiedzi zostanie wyświetlone ostrzeżenie "Określone zapytanie nie zawiera klauzuli $select ani $apply, która jest zalecana dla wszystkich zapytań".