Fusion de fichier avec des colonnes différentes

Accueil – Le CFO masqué Forums Power Query Fusion de fichier avec des colonnes différentes

  • Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par M Sadoulet, le il y a 3 années et 8 mois.
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #75694
    M Sadoulet
    Participant

    Bonjour,

    Je souhaite mener une analyse sur une base de données contenant des fichiers générés chaque semaine.
    Mon soucis est de la métholodie de ces fichiers à changer et notamment que sur les derniéres, j’ai des colonnes supplémentaires.

    Je souhaite combiner le tout.

    J’ai tenter de faire une intégration en chargeant un dossier complet mais les données restent à la même colonne ce qui fait qu’un décalage s’opére. (en revanche je peux en amont via un Transformer fichier, mettre en forme chaque fichier de données de la même maniére, comme supprimer les premieres lignes pour trouver la ligne d’entête)

    L’autre solution que j’envisage mais plus lourde est de charger chaque fichier puis ensuite d’ajouter les requêtes et la Power Query décalage bien les données pour les garder dans les même colonne. Mais, je perd une information essentiellement qui est le nom de chaque fichier source que je veux mettre dans une colonne (possible par l’intégration par dossier).

    A titre d’exemple; voici un fichier exel avec 3 onglets : 2 onglets de source (2 fichiers différentes) et un onglet avec le résultat souhaité.

    Enfin et ce n’est pas dans l’exemple, si j’ai un fichier avec une colonne nommé “Commentaires” et l’autre renommé ‘Commentaire autre” comment puis-je par une fonction renommé le nom (dans le cas ou l’importation se fait par dossier, un genre de si le nom est “Commentaires” alors le remplacer par “Commentaire autre”). Le but étant de normer les colonnes avant fusion de tous les fichiers sans devoir le faire en amont manuellement dans chaque fichier

    Cordialement,

    Attachments:
    You must be logged in to view attached files.
    #75696
    Kim Leblanc
    Participant

    Bonjour,

    Une solution simple serait de mettre tous les anciens fichiers qui ont la même structure dans un répertoire, puis les nouveaux fichiers dans un autre répertoire. De charger les deux répertoires en 2 requêtes distinctes puis de les mettre bout à bout par la suite.

    Pour ce qui est du titre qui change pour une même colonne, vous pourriez descendre les en-têtes sur la première ligne, ajouter une colonne conditionnelle: si le nom est « Commentaires » alors le remplacer par « Commentaire autre ». Puis de remettre la 1ere ligne en en-tête.

    Kim

    #75697
    M Sadoulet
    Participant

    C’est effectivement une option à laquelle j’ai pensé par la suite sachant en effet que je n’ai sans doute pas eu d’évolutions sur chaque fichier. Cela va juste m’imposer de savoir quand il y a eu des évolutions.

    Pour le second point je n’y avais pas pensé mais c’est en effet une trés bonne option.

    Merci

    #75727
    Stéphane Lorin
    Participant

    Bonjour

    Pour changer le nom d’une colonne il existe une fonction dédiée : Table.RenameColumns

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    Changement_nom_colonne = Table.RenameColumns(
    Source,
    {“Commentaires”, “Commentaires autre”},
    MissingField.Ignore
    )
    in
    Changement_nom_colonne

    Si j’ai une table nommée “Tableau1” avec un champ “Commentaires” celui-ci est renommé en “Commentaires autre”.
    Si le champ n’existe pas, la fonction n’a pas d’impact grâce à l’argument MissingField.Ignore

    Stéphane

    #75839
    Kim Leblanc
    Participant

    Merci Stéphane pour cette option, intéressant le MissingField.Ignore!

    Kim

    #75855
    M Sadoulet
    Participant

    Oui cette option est très intéressante car elle ne renvoie pas de message d’erreur et permet en plus de s’affranchir du fait que la colonne “Commentaires” ne soient pas toujours dans la même position

    Merci

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.