PowerQuery - compiler des fichiers CSV
Bonjour,
Input
J'ai regroupé dans un dossier une multitude de fichiers au format ".csv" qui ont tous le même type de jeux de données, et la même architecture. C'est à dire :
- colonne 1 : index horodatage
- colonne 2 : valeurs teméprature
Output souhaité
Je souhaite compiler ces fichiers csv pour obtenir un fichier avec le format suivant
- ligne 1 : entête de colonne
- colonne 1 : index horodatage
- colonne 2 : valeurs température d'un fichier csv
- colonne 3 : valeurs température d'un autre fichier csv
- colonne X: valeurs température d'un X autre fichier csv
Mon avancement
Je débute avec PowerQuery et ai suivi le tuto suivant :
7EouTU_Mbsk
Mais je bloque, après avoir définit les requêtes, en essayant de charger les données dans excel. Les sorties proposés ont le format suivant :
- colonne 1 : horodatage
- colonne 2 : les valeurs d'un fichier
- pas de colonne 3, 4 ,5, X ...
Il me semble que je doive transformer les colonnes pour les faire pivoter, et ainsi avoir les valeurs sous formles de différentes colonnes et pas des lignes mais je n'y arrive pas.
Si l'un de vous peux m'aiguiller ça m'aiderait grandement !
Merci d'avance,
Voici un zip avec les csv, et l'excel de compilation foireux.
Bonjour Jean-Eric,
Merci mille fois, ça correspond tout à fait à ma demande ! Sauf le nom des colonnes, où j’aurai préféré avoir le nom des sondes, mais j'imagine pouvoir corriger ça.
Je repasse une à une les étapes réalisées pour comprendre. Et je bloque sur celle de la fonction réalisée "FxExtract". Pouvez-vous me l'expliquer ?
Merci d'avance
Batoine
Bonjour Jean-Eric,
Merci mille fois, ça correspond tout à fait à ma demande ! Sauf le nom des colonnes, où j’aurai préféré avoir le nom des sondes, mais j'imagine pouvoir corriger ça.
Je repasse une à une les étapes réalisées pour comprendre. Et je bloque sur celle de la fonction réalisée "FxExtract". Pouvez-vous me l'expliquer ?
Merci d'avance
Batoine
En cherchant un peu plus longtemps, j'ai compris !
Je partage ma compréhension et découverte du sujet. Voici ce qui m'a aidé dans ma recherche :
Cette vidéo youtube de compréhension des fonctions personnalisés.
Ce que j'en retiens :
- ajouter dans le bandeau à gauche une requête vide (Nouvelle requête -> Autres sources -> requête vide)
- Ecriture de la fonction. Je n'avais pas vu que le champs de formule pouvait être agrandi... En relisant votre formule je comprends, avec mon vocabulaire : on dit que ce que l'on va ajouter des données à partir de fichiers CSV. On définit ce que l'on veut en soustraite : 2 premières colonnes et supprimer l'en-tête.
- On appelle cette fonction dans l'étape de l'appel de fonction personnalisée
Cette exercice m'amène une autre question :
Est-il possible de faire un pivot de colonne sur autre chose qu'une colonne de valeur numérique, autrement dit, aurais-je pu pivoter sur du texte, pour avoir in fine des entêtes de colonne plus compréhensible que 1, 2, 3.... ?
Merci encore Jean-Eric pour votre aide qui m'a motivée à chercher
Batoine
Bonjour à tous
Exemple de titrage avec l'ajout d'une colonne pour remplacer Index
Tu peux la modifier à ton goût
J'ai modifié aussi le répertoire qui ne suivait pas dans la requête et dans l'onglet Paramètres
Re,
Bonjour 78chris,
J'ai été un peu rapide sur le coup.
Une petite mise à jour.
Cdlt.
fxExtract
(FileName as text)=>
let
FolderPath=Répertoire,
Source = Csv.Document(File.Contents(FolderPath&FileName),[Delimiter=";", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Removed Top Rows" = Table.Skip(Source,1)
in
#"Removed Top Rows"
Added Prefix
= Table.TransformColumns(#"Renamed Columns", {{"Index", each "T° " & Text.From(_, "fr-FR"), type text}})
RE
@Jean-Eric
Super le préfixe !
A noter que sur l'add on on ne peut utiliser Répertoire comme variable "globale"...
(je sais que batoine a 365 mais cela peut servir à d'autres)
Bonjour à tous
Exemple de titrage avec l'ajout d'une colonne pour remplacer Index
Tu peux la modifier à ton goût
J'ai modifié aussi le répertoire qui ne suivait pas dans la requête et dans l'onglet Paramètres
Bonjour Chris,
Merci de nous rejoindre et de m'avoir répondu. En ouvrant ton fichier, dans l'onglet paramètre la valeur de la cellule A2, n'est pas variable. Donc la fonctionnalité d’identification automatique du dossier ne fonctionne pas.
Si je la remplace par : =GAUCHE(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))-2), ça fonctionne.
En revanche, quand j'essaie de reconstituer le fichier de tout pièce, je n'y arrive pas. Peux-tu me dire quelles sont les premières étapes ? Je tente après avoir créer un nouveau fichier excel :
- 1 - Ecriture en cellule A2 de la feuille 1 de la formule écrite plus haut. J'obtiens le nom du répertoire.
- 2 - Ensuite j'ouvre PowerQuery
3 - Je créer une nouvelle requete en écrivant la formule := Excel.CurrentWorkbook(){[Name="Répertoire"]}[Content][Column1]{0}
C'est ici que ça bloque... J'ai le message d'erreur suivant :
Je débute en PowerQuery et n'ai pas tout a fait saisi la logique de fonctionnement de l'outil.
Merci d'avance pour ton aide
Batoine
RE
La formule part du principe que c'est le répertoire courant
Comme je n'ai pas fait la synthèse dans le même dossier que les CSV, j'ai mis une valeur en dur qui est correctement exploitée par les requêtes si on la change...
Concernant ton souci : la cellule contenant le répertoire, quel que soit son contenu, doit être nommée dans Excel
Tu la sélectionnes et Formules, Définir un nom : et tu tapes Répertoire
Bonsoir Chris, Jean-Eric,
@Chris, merci beaucoup ! J'ai finalement réussi. J'avais le mauvais réflexe de renommer directement avec le menu déroulant en haut à gauche, ce qui semblait causé problême.
@Jean-Eric : votre solution ne marche pas chez moi, ma version d'excel ne me permet pas de reconnaitre le FileFolder comme un text. Je pensais pourtant avoir la dernière version d'Excel, mais j'ai celle d'aout (Version 1908).
Voici finalement et pour partage aux futurs lecteurs mon fichier final. J'ai finalement opté de passer par une autre manière de définition de l'ID avec pour contrainte de pouvoir utiliser ce fichier avec d'autres typologies de données (à condition que les csv ai le même format)
Bonne soirée et merci !
Bonjour,
Ces différences de version d'Excel 365, suivant le canal des mises à jour retenu, deviennent pénibles.
Mon laptop est HS et j'attends un noubeau SSD. Ma version était, je crois, 2002.
Je travaille depuis le début de la semaine avec Excel 2019.
Là encore, les différences sont notables. Y-compris pour Power Query (liste des fonctions et auto complétion par exemple).
Bonne continuation.
Cordialement.
Bonjour
Oui comme les mises à jour Windows 10
J'ai un 365 perso avec version 2002 et un 365 pro qui se met moins souvent à jour et je constate aussi des différences...
L'add on date, donc là c'est plus normal
2019 n'est pas mis à jour je crois...
Bonjour
@Jean_Eric
J'espère que tu as trouvé une solution pour ton PC
Je reviens vers toi à propos du répertoire
SI j'ouvre le ficher dans 365 j'ai le même problème que sur l'add on : l'utilisation de =FolderFiles(Répertoire)
donne un message d'erreur "Formula .FireFall : requête "Consolidation" (étape "Source") référence d'autres requêtes ou étapes...."
As-tu un paramétrage particulier de ton PowerQuery qui évite cela sur ton PC ?
Merci
Bonjour
@78chris,
Bonjour,
Pour le souci de mon laptop, c'est réglé (je crois).
Depuis la mise de novembre 2019 de Windows 10, j'avais droit aux BSOD, sans raisons apparentes, comme à l'époque de Windows 95-98 !
Plusieurs réinstallations (avec des diagnostics de ssd satisfaisants) et mêmes soucis.
En dernier carat, j'ai comme même acquéri un nouveau ssd (Crucial MX 500Go ald 128Go pour 75 EUR
Mon Lenovo X1 Carbon de 2014 est tout neuf (et même plus fluide, plus rapide, etc...).
Et je fais attention aux mises à jour Qualité de *erd* de Windows....
Sinon, je te mets ci-dessous ma config. Power Query.
En complément regarde si Toujours autorisé est activé.
Je l'ai activé il y a quelques temps après lecture d'un sujet (mais lequel et quel site ?).
Sinon, de quel fichier parle-t'on ?
Cdlt.
Nota :
J'ai oublié un point.
Dans Paramètres de la source de données, Source des données dans le classeur actif, Modifier les autorisations.
Vérifie le niveau de confidentialité !?.
Re
Merci
C'est dans les paramètres généraux de confidentialité : j'avais le niveau intermédiaire.
Je vais pouvoir simplifier une solution que j'ai concoctée...
C'est bien que tu aies pu remettre ton portable sur les rails
J'avais un vieux portable de 2008 avec un processeur pas mauvais.
Un SDD lui avait donné une 2ème jeunesse.
Il était partitionné en 3 (2 W7 et un W10)
Mais la canicule de l'été dernier a eu raison de lui : les soudures entre la CM et la puce graphique n'ont pas résisté
Les MAJ de W10 sont une cata : mes copains appellent tout le temps car à chaque mise à jour quasiment ils perdent de vue leur imprimante...