Freigeben über


Trendbericht zur Dauer des Pipelinevorgangs

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

Um die Zeit zu visualisieren, mit der Aufgaben für eine bestimmte Pipeline abgeschlossen werden müssen, können Sie einen Trendbericht erstellen. Die folgende Abbildung zeigt beispielsweise das 80. Quantil in Sekunden für alle Aufgaben, die für eine bestimmte Pipeline vom 1. September bis 15. Dezember 2022 abgeschlossen wurden.

Screenshot des Trendberichts zur Vorgangsdauer von Power BI-Pipelines.

Wichtig

Power BI-Integration und Zugriff auf den OData-Feed des Analytics-Diensts sind in der Regel für Azure DevOps Services und Azure DevOps Server 2020 und höhere Versionen verfügbar. Die in diesem Artikel bereitgestellten Beispielabfragen gelten nur für Azure DevOps Server 2020 und höhere Versionen und hängen von version 3.0-preview oder höher ab. Wir empfehlen Ihnen, diese Abfragen zu verwenden und uns Feedback zu geben.

Voraussetzungen

Hinweis

In diesem Artikel wird davon ausgegangen, dass Sie eine Übersicht über Beispielberichte mit OData-Abfragen lesen und ein grundlegendes Verständnis von Power BI haben.

Beispielabfragen

Sie können die folgenden Abfragen des PipelineRunActivityResults? Entitätssatzes verwenden, um andere, aber ähnliche Trendberichte für die Vorgangsdauer zu erstellen.

Hinweis

Informationen zum Ermitteln verfügbarer Eigenschaften für Filter- oder Berichtszwecke finden Sie unter Metadatenreferenz für Azure Pipelines. Sie können Ihre Abfragen filtern oder Eigenschaften zurückgeben, indem Sie einen der Werte unter oder NavigationPropertyBinding PathEntityType verwenden, die Property mit einem EntitySetverfügbar sind. Jede EntitySet entspricht einem EntityType. Weitere Informationen zum Datentyp der einzelnen Werte erhalten Sie in den Metadaten, die für den entsprechenden Wert EntityTypebereitgestellt werden.

Vorgangsdauertrend für den angegebenen Pipelinenamen

Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.

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

Ersetzungszeichenfolgen und Abfrageaufschlüsselung

Ersetzen Sie die folgenden Zeichenfolgen durch Ihre Werte. Schließen Sie keine Klammern {} in Ihre Ersetzung ein. Wenn Ihr Organisationsname beispielsweise "Fabrikam" lautet, ersetzen Sie {organization} durch Fabrikam, nicht {Fabrikam}.

  • {organization} - Name Ihrer Organisation
  • {project} - Name Ihres Teamprojekts
  • {pipelinename} - Ihr Pipelinename. Beispiel: Fabrikam hourly build pipeline
  • {startdate} - Das Datum, an dem Der Bericht beginnt. Format: JJJJ-MM-DDZ. Beispiel: 2021-09-01Z steht für den 1. September 2021. Schließen Sie keine Anführungszeichen oder eckigen Klammern ein, und verwenden Sie zwei Ziffern sowohl für Monat als auch für Datum.

Abfrageaufschlüsselung

In der folgenden Tabelle werden die einzelnen Teile der Abfrage beschrieben.

Abfrageteil

Beschreibung


$apply=filter(

Startklausel filter() .

Pipeline/PipelineName eq '{pipelinename}'

Zurückgeben von Vorgangsergebnissen für eine bestimmte Pipeline.

and TaskDisplayName eq '{taskname}'

Zurückgeben von Vorgangsergebnissen für einen bestimmten Vorgang.

and PipelineRunCompletedOn/Date ge {startdate}

Zurückgeben von Vorgangsergebnissen für Pipelineausführungen am oder nach dem angegebenen Datum.

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

Zurückgeben von Vorgangsergebnissen für nur erfolgreiche oder teilweise erfolgreiche Pipelineläufe.

and (CanceledCount ne 1 and SkippedCount ne 1 and AbandonedCount ne 1)

Lassen Sie pipelineausführungen aus, die abgebrochen, übersprungen oder abgebrochen wurden.

)

Close-Klausel filter() .

/compute(

Startklausel compute() .

percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)

Berechnen Sie für jeden Tag das 80. Quantil aller Vorgänge, die den Filterkriterien entsprechen.

/groupby(

Startklausel groupby() .

(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))

Gruppieren Nach Datum des Abschlusses der Pipelineausführung und berechnete Tagesdauer des 80. Quantils.

&$orderby=PipelineRunCompletedOn/Date asc

Ordnen Sie die Antwort nach abschlussdatum an.

Vorgangsdauertrend für eine Pipeline, Angeben der Pipeline-ID

Pipelines können umbenannt werden. Um sicherzustellen, dass die Power BI-Berichte beim Ändern des Pipelinenamens nicht unterbrechen, verwenden Sie die Pipeline-ID anstelle des Pipelinenamens. Sie können die Pipeline-ID über die URL der Pipelineausführungsseite abrufen.

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

Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.

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. und 90. Quantil-Vorgangsdauertrend für eine Pipeline

Um den Vorgangsdauertrend anzuzeigen, der mit einem anderen Quantilwert berechnet wird, verwenden Sie die folgende Abfrage, die 50. und 95. Quantil-Vorgangsdauer zusammen mit 80. Quantil angibt.

Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.

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

Vorgangsdauertrend für eine nach Verzweigung gefilterte Pipeline

Verwenden Sie die folgende Abfrage, um den Dauertrend eines Vorgangs für eine bestimmte Verzweigung anzuzeigen. Führen Sie die folgenden Schritte aus, um den Bericht zu erstellen:

  • Erweitern Branch in Branch.BranchName
  • Ändern des Spaltendatentyps
  • Erstellen des Liniendiagrammberichts
  • Wählen Sie "Datenschnitt " im Bereich "Visualisierungen " aus, und fügen Sie das Branch.BranchName Feld des Datenschnitts hinzu.
  • Wählen Sie den Verzweigungstyp aus dem Datenschnitt aus, für den der Trend für die Vorgangsdauer angezeigt werden muss.

Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.

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

Vorgangsdauertrend für alle Pipelinevorgänge

Verwenden Sie die folgende Abfrage, um den Vorgangsdauertrend für alle Pipelinevorgänge in einem einzelnen Bericht anzuzeigen. Führen Sie die folgenden Schritte aus, um den Bericht zu erstellen:

Kopieren Sie die folgende Power BI-Abfrage, und fügen Sie sie direkt in das Fenster "Leere Datenabfrage> abrufen" ein. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.

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

(Optional) Abfrage umbenennen

Sie können die Standardabfragebezeichnung Query1 in aussagekräftiger umbenennen. Geben Sie einfach im Bereich Abfrageeinstellungen einen neuen Namen ein.

Screenshot: Menüoptionen für Power BI-Abfragen, Abfrage umbenennen.

Erweitern von Spalten in Power Query-Editor

Vor dem Erstellen des Berichts müssen Sie Spalten erweitern, die Datensätze zurückgeben, die mehrere Felder enthalten. In diesem Fall möchten Sie die PipelineRunCompletedOn Spalte erweitern, um sie zu PipelineRunCompletedOn.Datereduzieren.
Informationen zum Erweitern von Arbeitselementen finden Sie unter Transformieren von Analysedaten zum Generieren von Power BI-Berichten.

Ändern des Spaltendatentyps

Ändern Sie im Menü "Transformieren " den Datentyp für die TaskDuration80thPercentileInSeconds Spalte in "Dezimalzahl". Informationen dazu finden Sie unter Transformieren eines Spaltendatentyps.

(Optional) Umbenennen von Spaltenfeldern

Sie können Spaltenfelder umbenennen. Sie können z. B. die Spalte TaskDuration80thPercentileInSeconds umbenennen in 80th Percentile. Informationen dazu finden Sie unter Umbenennen von Spaltenfeldern.

Schließen Sie die Abfrage, und wenden Sie Ihre Änderungen an.

Nachdem Sie alle Datentransformationen abgeschlossen haben, wählen Sie "Schließen" und "Übernehmen " im Menü "Start " aus, um die Abfrage zu speichern und zur Registerkarte "Bericht " in Power BI zurückzukehren.

Screenshot der Option

Erstellen des Liniendiagrammberichts

  1. Wählen Sie in Power BI unter "Visualisierungen" den Bericht "Liniendiagramm" aus.

    Screenshot der Auswahl von Visualisierungsfeldern für trendliniendiagramme für Vorgangsdauer.

  2. Zu X-Achse hinzufügenPipelineRunCompletedOn.Date. Klicken Sie mit der rechten Maustaste auf das Feld, und wählen Sie "PipelineRunCompletedOn.Date" anstelle der Datumshierarchie aus.

  3. Fügen Sie TaskDuration80thPercentileInSeconds der Y-Achse hinzu, und klicken Sie mit der rechten Maustaste darauf, um sicherzustellen, dass Summe ausgewählt ist.

  4. Wenn Sie den Berichtstitel ändern möchten, wählen Sie im Bereich "Visualisierungen" das Symbol "Formatieren des visuellen Pinsels" aus, wählen Sie "Allgemein" aus, erweitern Sie "Titel", und ersetzen Sie den vorhandenen Text.

Die folgende Abbildung zeigt den resultierenden Bericht.

Screenshot des Trendberichts über die Dauer von Power BI-Pipelines-Beispielaufgaben.