Disons que nous avons un fichier Excel avec plusieurs tableaux intelligents :
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 :
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:
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 :
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 :
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 à :
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 :
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