Libérer des exemples de requêtes et de rapports de mise en production
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Les rapports burndown et burnup montrent combien de travail se termine au fil du temps. L’image suivante montre le burndown à la fois par le nombre d’histoires utilisateur et la somme des points d’histoire.
Les graphiques burndown n’ont de sens que si vous planifiez votre travail pendant la période du graphique. Sinon, si vous planifiez un sprint par sprint, vous ne verrez pas de brûlure standard. Dans ces cas, un graphique de burnup est plus judicieux pour voir comment la progression est effectuée au fil du temps.
Important
- La suppression de chemins d’accès de zone ou la reconfiguration des chemins d’itération entraîne une perte de données irréversible. Par exemple, les graphiques de widgets burndown et burnup, sprint burndown et les graphiques de vélocité pour les équipes avec des chemins d’accès de zone modifiés n’affichent pas de données précises . Les graphiques de tendance historique référencent le chemin d’accès à la zone et le chemin d’itération, car ils ont été définis au moment de chaque élément de travail. Une fois supprimé, vous ne pouvez pas récupérer les données historiques pour ces chemins d’accès.
- Vous ne pouvez supprimer que des chemins d’accès de zone et d’itération qui ne sont plus utilisés par des éléments de travail.
Pour plus d’informations sur le burndown et le burnup, consultez Configurer un widget burndown ou burnup et burndown et burnup conseils.
Remarque
Cet article part du principe que vous lisez la 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.
Prérequis
- Accès : être membre d’un projet avec au moins un accès de base .
- Autorisations : par défaut, les membres du projet ont l’autorisation d’interroger Analytics et de créer des vues.
- Pour plus d’informations sur les autres prérequis concernant l’activation du service et des fonctionnalités et les activités de suivi des données générales, consultez Autorisations et conditions préalables pour accéder à Analytics.
Exemples de requêtes
Les requêtes de cette section montrent comment générer des graphiques d’éléments de travail en fonction des données historiques. Toutes ces requêtes spécifient l’ensemble d’entités WorkItemSnapshot
.
Remarque
Pour déterminer les propriétés disponibles à des fins de filtre ou de rapport, consultez Informations de référence sur les métadonnées pour Azure Boards. 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 plus d’informations sur le type de données de chaque valeur, passez en revue les métadonnées fournies pour le type de données correspondant EntityType
.
Burndown of User Stories dans un chemin d’accès de zone à partir de la date de début et de fin
La requête suivante vous montre comment retourner des données historiques des récits utilisateur pour une version basée sur des éléments de travail marqués avec une balise de mise en production.
Remarque
Pour les rapports basés sur le filtrage d’une balise, la balise doit être affectée à l’élément de travail au début de la mise en production ou de la date de début du burndown/burnup. Sinon, l’élément de travail n’est pas inclus dans les données retournées.
Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
&"$apply=filter(WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and Tags/any(x:x/TagName eq '{tagname}') "
&"and DateValue ge {startdate} "
&"and DateValue le {enddate} "
&") "
&"/groupby ( "
&"(DateValue,State,Area/AreaPath), "
&"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
&") "
,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 ou omettre entièrement « /{projet} » pour une requête inter-projets{areapath}
- Chemin d’accès de votre zone. Exemple de format :Project\Level1\Level2
{tag}
- Balise qui représente votre version. Tous les éléments de travail avec étiquetés{tagname}
sont inclus dans le rapport{startdate}
- Date de début du rapport d’avancement au format :YYYY-MM-DDZ
. Par exemple :2022-04-01Z
représente 2022-avril-01. Ne placez pas entre guillemets.{enddate}
- Date de fin du rapport d’avancement.
Répartition des requêtes
Le tableau suivant décrit chaque partie de la requête.
Composant de requête
Description
$apply=filter(WorkItemType eq 'User Story'
Incluez les récits utilisateur dans le menu d’avancement.
and StateCategory ne 'Completed'
Filtre les éléments terminés. Pour plus d’informations sur les catégories d’état, consultez Utilisation des états de flux de travail et des catégories d’état dans backlogs et tableaux.
and startswith(Area/AreaPath,'{areapath}')
Incluez uniquement les récits utilisateur sous un chemin d’accès de zone spécifique en '{areapath}'
remplaçant .
Pour filtrer par nom d’équipe, utilisez l’instruction Teams/any(x:x/TeamName eq '{teamname})'
filter .
and Tags/any(x:x/TagName eq '{tagname}')
.
Spécifie l’étiquette de balise qui représente la mise en production à brûler et pour inclure tous les éléments de travail marqués avec {tagname} dans le rapport.
and DateValue ge {startdate}
Démarrez le burndown le ou après la date spécifiée. Exemple : 2019-04-01Z représente 2019-avril-01.
and DateValue le {enddate}
Démarrez le burndown le ou avant la date spécifiée. Même format que {startdate}.
)
Clause Close filter()
.
/groupby (
Clause Start groupby()
.
(DateValue, State, Area/AreaPath),
Regroupez par DateValue
(utilisé pour la tendance) et tous les champs sur lesquelles vous souhaitez créer un rapport.
aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints)
Agréger en fonction du nombre d’histoires utilisateur et de la somme des points d’histoire.
)
Clause Close groupby()
.
Burndown of User Stories for a team
La requête suivante retourne les données de burndown filtrées par nom d’équipe plutôt que par chemin d’accès à la zone.
Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
&"$apply=filter(WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and (Teams/any(x:x/TeamName eq '{teamname}') or Teams/any(x:x/TeamName eq '{teamname}') or Teams/any(x:x/TeamName eq '{teamname}') "
&"and Tags/any(x:x/TagName eq '{tagname}') "
&"and DateValue ge {startdate} "
&"and DateValue le {enddate} "
&") "
&"/groupby ( "
&"(DateValue,State,Area/AreaPath), "
&"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
&") "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Burndown User Stories avec un instantané tous les vendredis
L’utilisation d’un instantané hebdomadaire réduit la quantité de données extraites dans Power BI et augmente les performances des requêtes.
Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
&"$apply=filter(WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and Tags/any(x:x/TagName eq '{tagname}') "
&"and DateValue ge {startdate} "
&"and DateValue le {enddate} "
&"and Date/DayName eq 'Friday' "
&") "
&"/groupby ( "
&"(DateValue,State,Area/AreaPath,AreaSK), "
&"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
&") "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Burndown User Stories en fonction d’une zone et d’un chemin d’itération
Certaines organisations utilisent des chemins d’itération pour marquer des récits pour une version. Par exemple, ils peuvent avoir un chemin d’itération de MyProject\Release1. La requête suivante montre comment sélectionner des récits utilisateur par chemin d’itération.
Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
&"$apply=filter(WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and startswith(Iteration/IterationPath,'{iterationpath}') "
&"and DateValue ge {startdate} "
&"and DateValue le {enddate} "
&") "
&"/groupby ( "
&"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
&"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
&") "
,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4])
in
Source
Burndown User Stories avec une valeur de champ personnalisée
Certaines organisations utilisent un champ personnalisé pour marquer les récits utilisateur pour une version. Par exemple, ils peuvent avoir un champ appelé Jalon. Cette requête vous montre comment sélectionner des récits utilisateur par un champ personnalisé.
Vous devez remplacer les deux {customfieldname}
et {releasevalue}
dans la requête. Pour déterminer le nom de votre champ personnalisé, consultez la référence des métadonnées pour Azure Boards, propriétés personnalisées. Vous allez remplacer {customfieldname}
par le nom de propriété personnalisé, par exemple Custom_Milestone
.
Copiez et collez la requête Power BI suivante directement dans la fenêtre Obtenir une requête vide de données>. Pour plus d’informations, consultez Vue d’ensemble des exemples de rapports à l’aide de requêtes OData.
let
Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItemSnapshot?"
&"$apply=filter(WorkItemType eq 'User Story' "
&"and StateCategory ne 'Completed' "
&"and startswith(Area/AreaPath,'{areapath}') "
&"and {customfieldname} eq '{releasevalue}' "
&"and DateValue ge {startdate} "
&"and DateValue le {enddate} "
&") "
&"/groupby ( "
&"(DateValue,StateCategory,State,Area/AreaPath,AreaSK), "
&"aggregate ($count as Count, StoryPoints with sum as TotalStoryPoints) "
&") "
,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 .
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 ce cas, vous devez développer les enregistrements suivants :
Links
Links.TargetWorkItem
Area
Iteration
AssignedTo
Pour savoir comment développer des éléments de travail, consultez Transformer des données Analytics pour générer des rapports Power BI.
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.
Créer le histogramme en cluster
Dans Power BI, choisissez Histogramme en cluster sous Visualisations.
Ajouter
DateValue
à l’axe X, cliquez avec le bouton droit et sélectionnezDateValue
, plutôt queDate Hierarchy
Ajouter
Count
à l’axe Y.Ajouter
TotalStoryPoints
à l’axe Y.
L’exemple de rapport affiche le burndown sur le nombre d’histoires et de somme ou de points d’histoire.
Articles connexes
- Explorer des exemples de rapports à l’aide de requêtes OData
- Construire des requêtes OData pour Analytics
- Se connecter à Power BI à l’aide de requêtes OData
- Reportez-vous aux métadonnées pour Azure Boards Analytics
- Accéder à des exemples de rapports et à un index de référence rapide
- Ajouter un segment Team à un rapport existant