Comment développer correctement les tables imbriquées dans Power Query

Table des matières

Disons que nous avons un fichier Excel avec plusieurs tableaux intelligents :

Comment développer correctement les tables imbriquées dans Power Query

Si vous chargez ces tables dans Power Query de manière standard à l'aide de la commande Données – Obtenir des données – À partir d'un fichier – À partir d'un livre (Données - Obtenir des données - À partir d'un fichier - À partir d'un classeur), alors on obtient quelque chose comme ceci :

Comment développer correctement les tables imbriquées dans Power Query

L'image, je pense, est familière à de nombreux utilisateurs de Power Query. Des tables imbriquées similaires peuvent être vues après la combinaison de requêtes (à la VLOOKUP), le regroupement (commande Par groupe languette De La Carrosserie ), importer tous les fichiers d'un dossier donné, etc.

La prochaine étape logique dans cette situation consiste généralement à développer toutes les tables imbriquées à la fois - en utilisant le bouton avec des doubles flèches dans l'en-tête de colonne Données:

Comment développer correctement les tables imbriquées dans Power Query

En conséquence, nous obtenons un assemblage de toutes les lignes de toutes les tables en un seul ensemble. Tout est bon, simple et clair. 

Imaginons maintenant qu'une nouvelle colonne (Discount) ait été ajoutée dans les tables sources et/ou qu'une des colonnes existantes (City) ait été supprimée :

Comment développer correctement les tables imbriquées dans Power Query

Ensuite, notre demande après la mise à jour renverra une image pas si belle - la réduction n'est pas apparue et la colonne de la ville est devenue vide, mais n'a pas disparu :

Comment développer correctement les tables imbriquées dans Power Query

Et il est facile de comprendre pourquoi - dans la barre de formule, vous pouvez clairement voir que les noms des colonnes développées sont codés en dur dans les arguments de la fonction Table.ExpandTableColumnTable.ExpandTableColumn sous forme de listes entre accolades.

Contourner ce problème est facile. Tout d'abord, récupérons les noms de colonne à partir de l'en-tête de n'importe quelle table (par exemple, la première) à l'aide de la fonction Table.ColumnNames. Cela ressemblera à :

Comment développer correctement les tables imbriquées dans Power Query

Ici:

  • #"Autres colonnes supprimées" – le nom de l'étape précédente, d'où l'on prend les données
  • sept {} – le numéro de la table dont on extrait l'en-tête (en partant de zéro, c'est-à-dire que 0 est la première table)
  • [Les données] – le nom de la colonne de l'étape précédente, où se trouvent les tables développées

Il reste à substituer la construction obtenue dans la barre de formule dans la fonction Table.ExpandTableColumnTable.ExpandTableColumn à l'étape de développer des tables au lieu de listes codées en dur. Tout devrait ressembler à ça au final :

Comment développer correctement les tables imbriquées dans Power Query

C'est tout. Et il n'y aura plus de problèmes avec l'expansion des tables imbriquées lorsque les données source changent.

  • Création de tableaux multiformats à partir d'une feuille dans Power Query
  • Créer des tableaux avec différents en-têtes à partir de plusieurs fichiers Excel
  • Collecter les données de toutes les feuilles du livre dans un seul tableau

 

Soyez sympa! Laissez un commentaire