Udostępnij za pośrednictwem


Przykładowy raport dotyczący trendów czasu trwania zadań procesu

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Aby zwizualizować czas potrzebny do wykonania zadań dla określonego potoku, możesz utworzyć raport trendu. Na przykład na poniższym obrazie przedstawiono 80. percentyl w sekundach dla wszystkich zakończonych zadań dla określonego procesu od 1 września do 15 grudnia 2022 r.

Zrzut ekranu przedstawiający raport trendu czasu trwania zadań potoków usługi Power BI.

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 Przeglądem przykładów raportów za pomocą zapytań OData i masz podstawową wiedzę z zakresu Power BI.

Przykładowe zapytania

Możesz użyć następujących zapytań zestawu jednostek PipelineRunActivityResults?, aby tworzyć różne, ale podobne raporty trendów dotyczących czasu trwania zadań.

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 elementem EntityType lub wartości NavigationPropertyBinding Path dostępnych przy 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 EntityTypeelementu .

Trend czasu trwania zadania dla określonej nazwy potoku

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 TaskDisplayName eq '{taskname}' "
                &"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.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
            &"/groupby( "
                &"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
            &"&$orderby=PipelineRunCompletedOn/Date asc "
    ,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 {organization}ciąg Fabrikam , a nie {Fabrikam}.

  • {organization} — Nazwa organizacji
  • {project} — Nazwa projektu zespołowego
  • {pipelinename} — Nazwa potoku danych. 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łowie 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 klauzulę filter().

Pipeline/PipelineName eq '{pipelinename}'

Zwraca wyniki zadania dla danego potoku.

and TaskDisplayName eq '{taskname}'

Zwraca wyniki zadania dla określonego zadania.

and PipelineRunCompletedOn/Date ge {startdate}

Zwracaj wyniki zadania dla przebiegów potoku w dniu lub po określonej dacie.

and (PipelineRunOutcome eq 'Succeed' or PipelineRunOutcome eq 'PartiallySucceeded')

Zwracaj wyniki zadań 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 filter() klauzulę.

/compute(

Rozpocznij klauzulę compute().

percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)

Dla każdego dnia oblicz 80. percentyl czasu trwania zadań wszystkich zadań spełniających kryteria filtrowania.

/groupby(

Rozpocznij groupby() klauzulę.

(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))

Grupuj według daty ukończenia uruchomienia potoku i oblicz 80. percentyl czasu trwania zadań dla każdego dnia.

&$orderby=PipelineRunCompletedOn/Date asc

Uszereguj odpowiedź według daty ukończenia.

Trend czasu trwania zadania dla potoku, określ identyfikator potoku

Nazwy potoków można zmienić. Aby upewnić się, że raporty Power BI nie ulegały awarii przy zmianie nazwy potoku, użyj identyfikatora potoku, a nie nazwy potoku. Identyfikator potoku można uzyskać z adresu URL strony przebiegów potoków.

https://dev.azure.com/{organization}/{project}/_build?definitionId={pipelineid}

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio do okna 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/PipelineId eq {pipelineid} "
                &"and TaskDisplayName eq '{taskname}' "
                &"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.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
            &"/groupby( "
                &"(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
            &"&$orderby=PipelineRunCompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Trend czasu trwania zadania dla 50., 80. i 90. percentyla rurociągu

Aby wyświetlić trend czasu trwania zadania obliczany przy użyciu innych wartości percentyli, użyj następującego zapytania, które zwraca czas trwania z percentylami 50., 95. wraz z 80. percentylem.

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio do okna 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 TaskDisplayName eq '{taskname}' "
                &"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, PipelineRunCompletedDateSK) as TaskDuration50thPercentileInSeconds, "
            &"percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds, "
                &"percentile_cont(ActivityDurationSeconds, 0.95, PipelineRunCompletedDateSK) as TaskDuration95thPercentileInSeconds) "
            &"/groupby( "
        &"(TaskDuration50thPercentileInSeconds, TaskDuration80thPercentileInSeconds, TaskDuration95thPercentileInSeconds, PipelineRunCompletedOn/Date)) "
    &"&$orderby=PipelineRunCompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Trend czasu trwania zadania dla potoku filtrowanego według gałęzi

Aby wyświetlić trend czasu trwania zadania dla określonej gałęzi, użyj następującego zapytania. Aby utworzyć raport, wykonaj następujące czynności:

Skopiuj i wklej następujące zapytanie usługi Power BI bezpośrednio w oknie Pobieranie danych>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 TaskDisplayName eq '{taskname}' "
                &" 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.8, BranchSK, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
            &"/groupby( "
                &" (TaskDuration80thPercentileInSeconds, Branch/BranchName, PipelineRunCompletedOn/Date)) "
            &"&$orderby=PipelineRunCompletedOn/Date asc "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

Trend czasu trwania zadania dla wszystkich zadań potoku

Aby wyświetlić trend czasu trwania zadania dla wszystkich zadań potoku w jednym raporcie, użyj następującego zapytania. Aby utworzyć raport, wykonaj następujące czynności:

Skopiuj i wklej następujące zapytanie Power BI bezpośrednio do okna 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.8, TaskDisplayName, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds) "
                &"/groupby( "
            &"(TaskDuration80thPercentileInSeconds, TaskDisplayName, PipelineRunCompletedOn/Date)) "
                &"&$orderby=PipelineRunCompletedOn/Date asc "
    ,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 Edytorze Power Query

Przed utworzeniem raportu należy rozwinąć kolumny zwracające rekordy zawierające kilka pól. W tym przypadku, należy rozwinąć kolumnę PipelineRunCompletedOn, by spłaszczyć ją do PipelineRunCompletedOn.Date.
Aby dowiedzieć się, jak rozwinąć elementy robocze, zobacz Przekształcanie danych analitycznych w celu generowania raportów usługi Power BI.

Zmienianie typu danych kolumny

Z menu Przekształć zmień typ danych kolumny TaskDuration80thPercentileInSeconds na Liczba dziesiętna. Aby dowiedzieć się, jak to zrobić, zobacz Przekształcanie typu danych kolumny.

(Opcjonalnie) Zmienianie nazwy pól kolumn

Możesz zmienić nazwy pól kolumn. Możesz na przykład zmienić nazwę kolumny TaskDuration80thPercentileInSeconds na 80th Percentile. Aby dowiedzieć się, jak to zrobić, zobacz Zmienianie nazwy pól kolumn.

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 w Edytorze Power Query.

Tworzenie raportu wykresu liniowego

  1. W usłudze Power BI w obszarze Wizualizacje wybierz raport Wykres liniowy.

    Zrzut ekranu przedstawiający wybrane pola wizualizacji dla raportu wykresu liniowego trendu czasu trwania zadania.

  2. Dodaj PipelineRunCompletedOn.Date do osi X. Kliknij prawym przyciskiem myszy pole i wybierz opcję PipelineRunCompletedOn.Date zamiast Hierarchia Dat.

  3. Dodaj TaskDuration80thPercentileInSeconds do oś Y, i kliknij prawym przyciskiem myszy, aby upewnić się, że wybrano pozycję Suma.

  4. 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 wynikowy raport.

Zrzut ekranu przykładowego raportu z trendem czasu trwania zadań w potokach Power BI.