Udostępnij za pośrednictwem


Przykładowy raport trendu czasu trwania zadania potoku

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ższej ilustracji przedstawiono 80. percentyl w sekundach dla wszystkich zadań zakończonych dla określonego potoku 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.

Wymagania wstępne

  • Aby wyświetlić dane analizy i wykonać zapytanie dotyczące usługi, musisz być członkiem projektu z dostępem podstawowym lub większym. Domyślnie wszyscy członkowie projektu otrzymują uprawnienia do wykonywania zapytań w usłudze Analytics i definiowania widoków analizy.
  • Aby dowiedzieć się więcej o innych wymaganiach 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 znasz artykuł Omówienie przykładowych raportów przy użyciu zapytań OData i masz podstawową wiedzę na temat usługi Power BI.

Przykładowe zapytania

Następujące zapytania zestawu jednostek umożliwiają tworzenie różnych, ale podobnych raportów trendów PipelineRunActivityResults? 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 Property wartości dostępnych EntityType w elemecie EntitySetlub NavigationPropertyBinding Path . Każda z nich EntitySet odpowiada elementowi EntityType. Aby dowiedzieć się więcej o typie danych każdej wartości, przejrzyj metadane podane dla odpowiedniego EntityTypeelementu .

Trend czasu trwania zadania dla określonej nazwy potoku

Możesz wkleić zapytanie usługi Power BI wymienione poniżej bezpośrednio w oknie Pobieranie zapytania pustego> danych. 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 Fabrikamciąg {organization} , 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 cudzysłowów ani nawiasów kwadratowych i używaj dwóch cyfr zarówno dla miesiąca, jak i daty.

Podział zapytań

W poniższej tabeli opisano każdą część zapytania.

Część kwerendy

Opis


$apply=filter(

Klauzula Start filter() .

Pipeline/PipelineName eq '{pipelinename}'

Zwraca wyniki zadania dla określonego 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(

Klauzula Start 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(

Klauzula Start groupby() .

(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))

Grupuj według daty ukończenia przebiegu potoku i obliczony dzień mądry 80. percentyl czasu trwania zadania.

&$orderby=PipelineRunCompletedOn/Date asc

Zamów 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 usługi Power BI nie przerywają zmiany 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}

Możesz wkleić zapytanie usługi Power BI wymienione poniżej bezpośrednio w oknie Pobieranie zapytania pustego> danych. 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

50., 80. i 90. percentylowy trend czasu trwania zadania dla potoku

Aby wyświetlić trend czasu trwania zadania obliczony przy użyciu innego percentyla, użyj następującego zapytania, które daje 50 i 95. czas trwania zadania percentyla wraz z 80. percentylem.

Możesz wkleić zapytanie usługi Power BI wymienione poniżej bezpośrednio w oknie Pobieranie zapytania pustego> danych. 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:

Możesz wkleić zapytanie usługi Power BI wymienione poniżej bezpośrednio w oknie Pobieranie zapytania pustego> danych. 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:

Możesz wkleić zapytanie usługi Power BI wymienione poniżej bezpośrednio w oknie Pobieranie zapytania pustego> danych. 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 Zapytanie Ustawienia.

Zrzut ekranu przedstawiający opcje menu zapytania usługi Power BI, zmień nazwę zapytania.

Rozwijanie kolumn w Edytor 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 , aby spłaszczać ją na PipelineRunCompletedOn.Date.
Aby dowiedzieć się, jak rozwinąć elementy robocze, zobacz Transform Analytics data to generate Power BI reports (Przekształcanie danych analizy 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 Edytor 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 pozycję PipelineRunCompletedOn.Date zamiast hierarchii dat.

  3. Dodaj TaskDuration80thPercentileInSeconds do osi Y i kliknij ją 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 przedstawiający przykładowy raport trendu czasu trwania zadań potoków usługi Power BI.