Support formation Rapports Power BI

Dépivoter

En bref

Reconnaître une table qui n'est pas « plate » ; choisir entre les trois commandes de dépivotage ; transformer des mois en colonnes en une colonne Mois et une colonne Qte.

Pourquoi ?

Les tableaux saisis à la main sont souvent organisés pour être lus : un produit par ligne, un mois par colonne. Ce format est pratique à l'écran, mais il complique tout dans Power BI. Il faut faire glisser chaque mois dans le visuel, ajouter une colonne et modifier le rapport à chaque nouveau mois, et le total annuel devient pénible à calculer. Power Query remet ces données à plat sans toucher au fichier source, et refait l'opération à chaque actualisation.

Notions clés

Une colonne, une nature de données

Voici une structure difficilement exploitable : les quantités sont réparties dans trois colonnes, Janvier, Février et Mars.

image.png

Dans un visuel Matrice de Power BI, il faut faire glisser les trois champs mois dans Valeurs, puis en ajouter un à chaque nouveau mois.

[Capture : matrice Power BI avec les champs Janvier, Février et Mars placés un par un dans Valeurs]

Voici les mêmes données remises à plat : une colonne Mois et une seule colonne Qte.

image.png

Il suffit alors de placer Mois en Colonnes et Qte en Valeurs : les nouveaux mois apparaissent automatiquement à l'actualisation, et le total se calcule seul.

[Capture : matrice Power BI avec Produit en Lignes, Mois en Colonnes, Qte en Valeurs et la colonne Total]

La règle à retenir : une colonne contient des données d'une seule nature. Dans la table d'origine, trois colonnes contenaient des quantités ; dans la table remise à plat, la colonne Qte contient toutes les quantités et la colonne Mois tous les mois.

Ajouter une période sans casser la structure

Ajouter une année en créant de nouvelles colonnes recrée le problème du départ :

image.png

Il faut au contraire ajouter une colonne Année et empiler les lignes. La table compte deux fois plus de lignes (18 pour 2019 et 18 pour 2020), mais chaque colonne garde une seule nature de données :

image.png

Dans le rapport, un segment sur Année suffit alors à passer d'une année à l'autre.

Les sources de type base de données (SQL Server, Oracle, MySQL) sont en général déjà structurées ainsi. Les classeurs Excel le sont rarement : plutôt que de modifier le fichier par copier-coller, laissez Power Query faire la transformation.

Les trois commandes de dépivotage

Toutes produisent deux colonnes : Attribut (les anciens en-têtes) et Valeur (les valeurs qui se trouvaient dessous). Elles diffèrent par leur comportement lorsqu'une nouvelle colonne apparaît dans la source.

CommandeColonnes à sélectionnerNouvelle colonne dans la source
Dépivoter les autres colonnesCelles à garder (Année, Produit)Dépivotée automatiquement
Dépivoter les colonnesCelles à dépivoter (les mois)Dépivotée automatiquement
Dépivoter uniquement les colonnes sélectionnéesCelles à dépivoterNon dépivotée, elle reste à côté d'Attribut et Valeur

Dépivoter les autres colonnes (Supprimer les autres colonnes du tableau croisé dynamique) est le choix le plus sûr lorsque le nombre de colonnes de la source peut augmenter (un mois de plus chaque mois). Source

L'opération inverse, Transformer > Pivoter la colonne, transforme les valeurs d'une colonne en en-têtes. Source

Pas à pas

Voici le fichier à remettre à plat : l'année n'est saisie que sur la première ligne de chaque bloc, et les mois sont en colonnes.

image.png

1. Dans Power BI Desktop, Accueil > Obtenir les données > Classeur Excel, puis sélectionnez le fichier.

2. Dans le Navigateur, cochez la feuille, puis cliquez sur Transformer les données.

3. Sélectionnez la colonne Année, puis clic droit > Remplir > Vers le bas : chaque ligne reçoit son année.

4. Sélectionnez les colonnes Année et Produit, puis clic droit > Dépivoter les autres colonnes.

[Capture : éditeur Power Query après le dépivotage, colonnes Année, Produit, Attribut et Valeur]

5. Double-cliquez sur l'en-tête Attribut et saisissez Mois, puis renommez Valeur en Qte.

6. Pour obtenir une vraie date, sélectionnez Mois puis Année, Transformer > Fusionner les colonnes, séparateur Espace. La colonne Fusionné contient par exemple « Janvier 2019 ».

7. Sélectionnez la colonne fusionnée, puis Transformer > Date > Analyser : elle devient une date (01/01/2019). Renommez-la DateVente.

[Capture : colonne DateVente de type Date après Analyser, à côté de Produit et Qte]

8. Vérifiez le type de Qte (Nombre entier), renommez la requête Ventes, puis Accueil > Fermer et appliquer.

Exemple

Le code M généré par l'étape 4 montre pourquoi la commande résiste aux nouvelles colonnes : elle nomme les colonnes à garder, et non les mois.

= Table.UnpivotOtherColumns(#"Rempli vers le bas", {"Année", "Produit"}, "Attribut", "Valeur")

Pièges et bonnes pratiques

  • Remplissez vers le bas avant de dépivoter : sinon les lignes sans année forment un groupe à part.
  • Supprimez les colonnes et lignes de total avant de dépivoter, sinon le total devient un « mois » de plus.
  • La conversion en date dépend des paramètres régionaux du fichier (Fichier > Options et paramètres > Options > Fichier actif > Paramètres régionaux) ; en cas d'erreur, utilisez Modifier le type > Utiliser les paramètres régionaux.
  • Ne créez pas une colonne par année ou par mois dans vos propres fichiers : ajoutez des lignes.

À retenir

  • Une colonne contient des données d'une seule nature.
  • Les mois ou années en colonnes doivent être dépivotés en deux colonnes Attribut et Valeur.
  • Dépivoter les autres colonnes accepte les nouvelles colonnes de la source sans modification de la requête.
  • Power Query refait le dépivotage à chaque actualisation, sans modifier le fichier source.

Pour aller plus loin

  • Dépivoter des colonnes. Source
  • Pivoter des colonnes. Source
  • Remplir des valeurs dans une colonne. Source

Exercice

Exo 2.1 | Dépivoter et ajouter des requêtes (page Mise en pratique).