Exemple de rapport de tendance de la durée des tâches de pipeline

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

Pour visualiser le temps nécessaire à l’exécution des tâches pour un pipeline spécifique, vous pouvez créer un rapport de tendance. Par exemple, l’image suivante montre le 80e centile en secondes pour toutes les tâches effectuées pour un pipeline spécifique du 1er septembre au 15 décembre 2022.

Capture d’écran du rapport de tendance de la durée des tâches Power BI Pipelines.

Important

L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles pour Azure DevOps Services et Azure DevOps Server 2020 et versions ultérieures. Les exemples de requêtes fournis dans cet article sont valides uniquement sur Azure DevOps Server 2020 et versions ultérieures, et dépendent de la version v3.0-preview ou ultérieure. Nous vous encourageons à utiliser ces requêtes et à nous fournir des commentaires.

Prérequis

  • Pour afficher les données Analytics et interroger le service, vous devez être membre d’un projet avec un accès de base ou supérieur. Par défaut, tous les membres du projet sont autorisés à interroger Analytics et à définir des vues Analytics.
  • Pour en savoir plus sur les autres prérequis concernant l’activation des services et des fonctionnalités et les activités générales de suivi des données, consultez Autorisations et prérequis pour accéder à Analytics.

Remarque

Cet article suppose que vous avez lu Vue d’ensemble des exemples de rapports à l’aide de requêtes OData et que vous avez une compréhension de base de Power BI.

Exemples de requêtes

Vous pouvez utiliser les requêtes suivantes de l’ensemble PipelineRunActivityResults? d’entités pour créer des rapports de tendances de durée de tâche différents mais similaires.

Remarque

Pour déterminer les propriétés disponibles à des fins de filtre ou de rapport, consultez la référence des métadonnées pour Azure Pipelines. Vous pouvez filtrer vos requêtes ou renvoyer des propriétés à l’aide de l’une Property des valeurs sous ou EntityType des NavigationPropertyBinding Path valeurs disponibles avec un EntitySet. Chaque EntitySet correspond à un EntityType. Pour en savoir plus sur le type de données de chaque valeur, passez en revue les métadonnées fournies pour le .EntityType

Tendance de la durée de la tâche pour le nom de pipeline spécifié

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes 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

Chaînes de substitution et répartition des requêtes

Remplacez les chaînes suivantes par vos valeurs. N’incluez pas de crochets {} avec votre substitution. Par exemple, si le nom de votre organisation est « Fabrikam », remplacez par {organization}Fabrikam, et non {Fabrikam}par .

  • {organization} - Nom de votre organisation
  • {project} - Nom de votre projet d’équipe
  • {pipelinename} - Nom de votre pipeline. Exemple : Fabrikam hourly build pipeline
  • {startdate} - Date de démarrage de votre rapport. Format : AAAA-MM-DDZ. Exemple : 2021-09-01Z représente le 1er septembre 2021. Ne placez pas entre guillemets ou crochets et utilisez deux chiffres pour les deux, mois et date.

Répartition des requêtes

Le tableau suivant décrit chaque partie de la requête.

Composant de requête

Description


$apply=filter(

Clause Start filter() .

Pipeline/PipelineName eq '{pipelinename}'

Retourne les résultats de la tâche pour un pipeline spécifique.

and TaskDisplayName eq '{taskname}'

Retourne les résultats de la tâche pour une tâche spécifique.

and PipelineRunCompletedOn/Date ge {startdate}

Retourne les résultats des tâches pour les exécutions de pipelines à la date spécifiée ou après celle-ci.

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

Retourne les résultats des tâches pour les exécutions de pipeline réussies ou partiellement réussies.

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

Omettez les exécutions de pipeline qui ont été annulées, ignorées ou abandonnées.

)

Clause Close filter() .

/compute(

Clause Start compute() .

percentile_cont(ActivityDurationSeconds, 0.8, PipelineRunCompletedDateSK) as TaskDuration80thPercentileInSeconds)

Pour chaque jour, calculez le 80e centile des durées de tâches de toutes les tâches qui correspondent aux critères de filtre.

/groupby(

Clause Start groupby() .

(TaskDuration80thPercentileInSeconds, PipelineRunCompletedOn/Date))

Regroupez la date d’achèvement de l’exécution du pipeline et la durée calculée de la tâche de 80e centile.

&$orderby=PipelineRunCompletedOn/Date asc

Commandez la réponse par date de fin.

Tendance de durée de tâche pour un pipeline, spécifiez l’ID de pipeline

Les pipelines peuvent être renommés. Pour vous assurer que les rapports Power BI ne s’arrêtent pas lorsque le nom du pipeline est modifié, utilisez l’ID de pipeline plutôt que le nom du pipeline. Vous pouvez obtenir l’ID de pipeline à partir de l’URL de la page d’exécution des pipelines.

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

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes 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

50e, 80e et 90e tendance de la durée des tâches de centile pour un pipeline

Pour afficher la tendance de la durée de la tâche calculée à l’aide d’une autre valeur de centile, utilisez la requête suivante qui donne la durée de la tâche de 50e et du 95e centile, ainsi que le 80e centile.

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes 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

Tendance de la durée des tâches pour un pipeline filtré par branche

Pour afficher la tendance de durée d’une tâche pour une branche particulière, utilisez la requête suivante. Pour créer le rapport, procédez comme suit :

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes 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

Tendance de la durée des tâches pour toutes les tâches de pipeline

Pour afficher la tendance de durée des tâches pour toutes les tâches de pipeline dans un seul rapport, utilisez la requête suivante. Pour créer le rapport, procédez comme suit :

Vous pouvez coller la requête Power BI répertoriée ci-dessous> directement dans la fenêtre Obtenir une requête vide. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports utilisant des requêtes 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

(Facultatif) Renommer la requête

Vous pouvez renommer l’étiquette de requête par défaut , Query1, en quelque chose de plus significatif. Entrez simplement un nouveau nom dans le volet Paramètres de requête .

Capture d’écran des options de menu de requête Power BI, renommer la requête.

Développer des colonnes dans Éditeur Power Query

Avant de créer le rapport, vous devez développer des colonnes qui retournent des enregistrements contenant plusieurs champs. Dans cette instance, vous souhaiterez développer la PipelineRunCompletedOn colonne pour l’aplatir PipelineRunCompletedOn.Datesur .
Pour savoir comment développer des éléments de travail, consultez Transformer des données Analytics pour générer des rapports Power BI.

Modifier le type de données de colonne

Dans le menu Transformer , remplacez le type de données de la TaskDuration80thPercentileInSeconds colonne par nombre décimal. Pour savoir comment procéder, consultez Transformer un type de données de colonne.

(Facultatif) Renommer des champs de colonne

Vous pouvez renommer des champs de colonne. Par exemple, vous pouvez renommer la colonne TaskDuration80thPercentileInSeconds en 80th Percentile. Pour savoir comment procéder, consultez Renommer les champs de colonne.

Fermez la requête et appliquez vos modifications

Une fois que vous avez terminé toutes vos transformations de données, choisissez Fermer & Appliquer dans le menu Accueil pour enregistrer la requête et revenir à l’onglet Rapport dans Power BI.

Capture d’écran de Éditeur Power Query’option Fermer et appliquer.

Créer le rapport de graphique en courbes

  1. Dans Power BI, sous Visualisations, choisissez le rapport de graphique en courbes.

    Capture d’écran des sélections de champs de visualisation pour le rapport de graphique en courbes de tendance de la durée des tâches.

  2. Ajouter PipelineRunCompletedOn.Date à l’axe X. Cliquez avec le bouton droit sur le champ et choisissez PipelineRunCompletedOn.Date à la place de la hiérarchie de dates.

  3. Ajoutez TaskDuration80thPercentileInSeconds à l’axe Y, puis cliquez dessus avec le bouton droit pour vérifier que Somme est sélectionnée.

  4. Pour modifier le titre du rapport, sélectionnez l’icône Mettre en forme votre pinceau visuel dans le volet Visualisations, sélectionnez Général, Développez Titre et remplacez le texte existant.

L’image suivante montre le rapport résultant.

Capture d’écran de l’exemple de rapport de tendance de durée des tâches Power BI Pipelines.