CSV non-identique d’un dossier à convertir en table

Accueil – Le CFO masqué Forums Power Query CSV non-identique d’un dossier à convertir en table

Mots-clés :  Power query csv

  • Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par Stéphane Lorin, le il y a 2 mois et 3 semaines.
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Articles
  • #93241
    Xavier Théorêt
    Participant

    Bonjour, nous avons un système informatique qui nous génère 3 CSV différents dans un dossier:
    – Une liste d’utilisateur (user.csv)
    – Une liste de groupe (group.csv)
    – Une table de relation utilisateur/groupe (groupmembership.csv)

    Grâce au cours Powerquery j’ai été capable de faire une Query sur le dossier, et à partir du résultat j’ai créé 3 query additionnelles pour nettoyer/importer chaque fichier CSV. Cela me fourni 3 tables prêtes à combiner plus tard.

    Chacune de ces Query ont les étapes suivantes:
    Sources -> Navigation -> CSV importé -> Entête promus -> Type modifié

    Tout fonctionne très bien. Jusqu’au jour où je veux recommencer à partir d’un nouveau dossier.

    J’aurais pensé que si je modifie la requête à l’étape “Source” pour le nouveau dossier tout se ferait automatiquement. Mais cela ne fonctionne pas car le nom du dossier est hard codé à ces 3 étapes : Source, Navigation et CSV importé.

    Vous voyez mon dilemne, pour réutiliser ma query il faudrait modifier le nom du dossier 3 fois pour les 3 fichiers/query.Il doit sûrement y avoir une stratégie plus efficace pour importer les tables – sans les fusionner – à partir de 3 fichiers CSV distinct.

    Voici la query pour un des fichiers:

    let
    Source = Folder.Files(“P:\Auditeur analyste\_Projets\20210716 – Export”),
    #”P:\Auditeur analyste\_Projets\20210716 – Export\_Users csv1″ = Source{[#”Folder Path”=”P:\Auditeur analyste\_Projets\20210716 – Export\”,Name=”Users.csv”]}[Content],
    #”CSV importé” = Csv.Document(#”P:\Auditeur analyste\_Projets\20210716 – Export\_Users csv1″,[Delimiter=”,”, Columns=33, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #”En-têtes promus” = Table.PromoteHeaders(#”CSV importé”, [PromoteAllScalars=true]),
    #”Type modifié” = Table.TransformColumnTypes(#”En-têtes promus”,{{“UserId”, Int64.Type}, {“FirstName”, type text}, {“MiddleName”, type text}, {“LastName”, type text}, {“UserName”, type text}, {“UserDomain”, type text}, {“LastUpdated”, type datetime}, {“Address”, type text}, {“Company”, type text}, {“Title”, type text}, {“DefaultEmail”, type text}, {“DefaultEmailType”, type text}, {“Email2”, type text}, {“Email2Type”, type text}, {“Email3”, type text}, {“Email3Type”, type text}, {“Email4”, type text}, {“Email4Type”, type text}, {“Email5”, type text}, {“Email5Type”, type text}, {“Phone1”, type text}, {“Phone1Type”, type text}, {“Phone2”, type text}, {“Phone2Type”, type text}, {“Phone3”, type text}, {“Phone3Type”, type text}, {“Phone4”, type text}, {“Phone4Type”, type text}, {“Phone5”, type text}, {“Phone5Type”, type text}, {“AccountStatus”, type text}, {“LastLoginDate”, type datetime}, {“ForcePasswordChange”, type logical}})
    in
    #”Type modifié”

    Merci à l’avance, je m’excuse à l’avance car je n’ai pas complété la partie langage M. Si la réponse s’y trouve merci de m’y référer. Sinon quelle serait à haut niveau la stratégie à adopter pour générer ces tables, peut-on générer trois tables à partir d’une seule requête?

    Xavier

    PS: Google est peu d’assistance car nous sommes inondés d’exemples qui combinent les CSV ensemble – ce qui n’est pas le cas ici.

    • Ce sujet a été modifié le il y a 2 mois et 3 semaines par Xavier Théorêt. Raison: Abonnement au thread
    #93261
    Stéphane Lorin
    Participant

    Bonjour

    commencez par créer un paramètre avec votre chemin “P:\Auditeur analyste\_Projets\20210716 – Export”
    puis affectez ce paramètre à l’étape “Source”

    Source = Folder.Files(NomDuParamètre),

    ensuite lors de la seconde étape, la référence au dossier peut être inutile s’il n’y a pas de sous-dossier contenant les mêmes noms et donc que vos 3 fichiers csv sont uniques.

    dans ce cas, la partie en gras peut être supprimée
    #”P:\Auditeur analyste\_Projets\20210716 – Export\_Users csv1″ = Source{[#”Folder Path”=”P:\Auditeur analyste\_Projets\20210716 – Export\”,Name=”Users.csv”]}[Content],

    de plus le nom de l’étape en italique qui a été créée automatiquement par Power Query peut être modifié en un nom plus clair.
    Ce nom sera ensuite repris à la troisième étape. En effet, le chemin d’accès que vous lisez lors de cette étape #”CSV importé” est le nom de l’étape précédente et non un nouvel appel au chemin d’accès.

    Au final

    let
    Source = Folder.Files(NomDuParamètre),
    Contenu = Source{[Name=”Users.csv”]}[Content],
    #”CSV importé” = Csv.Document(Contenu,[Delimiter=”,”, Columns=33, Encoding=65001, QuoteStyle=QuoteStyle.None]),

    Stéphane

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