Przykładowy raport czasu trwania zadania potoku
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Jak długo trwa wykonywanie różnych zadań? Ten artykuł zawiera zapytania, z których można wygenerować raport dla określonego pipeline'u i jego zadań. Na przykład poniższy obraz przedstawia 50., 80. i 95. percentyle w sekundach dla wszystkich zadań zakończonych dla pewnej ścieżki od 1 września do 15 grudnia 2022 r.
Ważne
Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne dla usług Azure DevOps Services i Azure DevOps Server 2020 i nowszych wersji. Przykładowe zapytania podane w tym artykule są prawidłowe tylko w przypadku usługi Azure DevOps Server 2020 i nowszych wersji oraz zależą od wersji 3.0 w wersji zapoznawczej lub nowszej. Zachęcamy do korzystania z tych zapytań i przekazywania opinii.
Kategoria | Wymagania |
---|---|
poziomy dostępu |
-
Członek projektu. — Co najmniej dostęp w warstwie podstawowej. |
Uprawnienia użytkownika | Domyślnie członkowie projektu mają uprawnienia do wykonywania zapytań w usłudze Analytics i tworzenia widoków. Aby uzyskać więcej informacji na temat innych wymagań wstępnych dotyczących włączania usługi i funkcji oraz ogólnych działań śledzenia danych, zobacz Uprawnienia i wymagania wstępne dotyczące dostępu do analizy. |
Uwaga
W tym artykule założono, że zapoznałeś się z Omówieniem przykładowych raportów przy użyciu zapytań OData i masz podstawową wiedzę na temat Power BI.
Przykładowe zapytania
Wykonasz zapytanie dotyczące PipelineRunActivityResults?
zestawu jednostek, aby zwrócić informacje o czasie trwania zadania.
Uwaga
Aby określić dostępne właściwości dla celów filtru lub raportu, zobacz Dokumentacja metadanych dla usługi Azure Pipelines. Możesz filtrować zapytania lub zwracać właściwości przy użyciu dowolnej z wartości Property
pod EntityType
lub NavigationPropertyBinding Path
wartości dostępnych z EntitySet
. 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 EntityType
elementu .
Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio w oknie Pobierz dane>Puste zapytanie. 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/PipelineRunActivityResults?"
&"$apply=filter( "
&"Pipeline/PipelineName eq '{pipelinename}' "
&"and PipelineRunCompletedOn/Date ge {startdate} "
&"and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded') "
&"and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1) "
&") "
&"/compute( "
&"percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds, "
&"percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds) "
&"/groupby( "
&"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName)) "
&"&$orderby=TaskDuration50thPercentileInSeconds desc "
,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 {} przy zamianie. Na przykład jeśli nazwa organizacji to "Fabrikam", zastąp {organization}
ciąg Fabrikam
, a nie {Fabrikam}
.
-
{organization}
— Nazwa organizacji -
{project}
— Nazwa projektu zespołowego -
{pipelinename}
— Nazwa potoku. Przykład:Fabrikam hourly build pipeline
-
{startdate}
— Data rozpoczęcia raportu. Format: RRRR-MM-DDZ. Przykład:2021-09-01Z
reprezentuje 1 września 2021 r. Nie umieszczaj w cudzysłowach ani nawiasach i używaj dwóch cyfr zarówno dla miesiąca, jak i dnia.
Podział zapytań
W poniższej tabeli opisano każdą część zapytania.
Część kwerendy
Opis
$apply=filter(
Rozpocznij filter()
klauzulę.
Pipeline/PipelineName eq '{pipelinename}'
Zwracanie przebiegów potoku dla określonego potoku.
and PipelineRunCompletedOn/Date ge {startdate}
Zwróć wyniki zadania dla uruchomienia potoku w dniu lub po określonej dacie.
and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded')
Zwracaj wyniki zadania tylko dla pomyślnych lub częściowo pomyślnych przebiegów potoku.
and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1)
Pomiń przebiegi potoków, które zostały anulowane, pominięte lub porzucone.
)
Zamknij klauzulę filter()
.
/compute(
Rozpocznij compute()
klauzulę.
percentile_cont(ActivityDurationSeconds, 0.5, TaskDisplayName) as TaskDuration50thPercentileInSeconds,
Dla każdego zadania oblicz 50. percentyl czasu trwania zadań dla wszystkich zadań spełniających kryteria filtrowania.
percentile_cont(ActivityDurationSeconds, 0.8, TaskDisplayName) as TaskDuration80thPercentileInSeconds,
Dla każdego zadania oblicz 80. percentyl czasu trwania zadań dla wszystkich zadań spełniających kryteria filtrowania.
percentile_cont(ActivityDurationSeconds, 0.95, TaskDisplayName) as TaskDuration95thPercentileInSeconds)
Dla każdego zadania oblicz 95. percentyl czasu trwania zadań dla wszystkich zadań spełniających kryteria filtrowania.
/groupby(
Uruchom klauzulę groupby()
.
(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds,TaskDuration95thPercentileInSeconds, TaskDisplayName))
Grupuj według zadania w przebiegu potoku i codziennie obliczaj 50. percentyl czasu trwania zadania, 80. percentyl czasu trwania zadania oraz 95. percentyl czasu trwania zadania.
&$orderby=TaskDuration50thPercentileInSeconds desc
Posortuj odpowiedź według zadania o 50. percentylu najwyższego czasu trwania.
(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.
Zmienianie typu danych kolumny
Z menu Przekształć zmień typ danych dla następujących kolumn na Decimal Number**.
. Aby dowiedzieć się, jak to zrobić, zobacz Przekształć typ danych kolumny.
-
TaskDuration80thPercentileInSeconds
-
TaskDuration80thPercentileInSeconds
-
TaskDuration95thPercentileInSeconds
.
(Opcjonalnie) Zmienianie nazwy pól kolumn
Możesz zmienić nazwy pól kolumn. Możesz na przykład zmienić nazwy następujących kolumn, aby były bardziej przyjazne dla wyświetlania. Aby dowiedzieć się, jak to zrobić, zobacz Zmienianie nazwy pól kolumn.
Oryginalna nazwa pola | Zmieniono nazwę pola |
---|---|
TaskDisplayName |
Nazwa zadania |
TaskDuration50thPercentileInSeconds |
50. percentyl |
TaskDuration80thPercentileInSeconds |
80. percentyl |
TaskDuration95thPercentileInSeconds |
95 percentyl |
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.
Utwórz raport tabelaryczny
W usłudze Power BI w obszarze Wizualizacje wybierz raport Tabela . Nazwy pól zostały zmienione zgodnie z sekcją Zmienianie nazwy pól.
Dodaj następujące pola do kolumn w określonej kolejności.
- Nazwa zadania
- 50 Percentyl
- 80. percentyl
- 95. percentyl
Aby zmienić tytuł raportu, wybierz ikonę Formatuj wizualizację pędzla do malowania w okienku Wizualizacje , wybierz pozycję Ogólne, rozwiń pozycję Tytuł i zastąp istniejący tekst.
Na poniższej ilustracji przedstawiono część wynikowego raportu.