Probleme avec date et heure Power query

Bonjour à tous,

je viens vers vous car dans le cadre d'un projet de fichier je me retrouve bloqué pour un détail :

J'ai créer une requête avec colonne : Date Heure et OK. Chaque fichier csv contient (une fois filtré et traité) 24 lignes tel façon :

La date ex 01/01/2021, ensuite l'heure : 06:00:00 (ça commence obligatoirement par 06:00:00) car c'est le début du poste de travail, puis la colonne OK avec le nombre de pièce produite.

Le problème vient du fait que parfois pour x ou y raison la production ne tourne pas et je me retrouve donc avec x lignes vides sur mes 24 lignes.

Si mes 3 premières lignes sont vides je sais que la date est jj/mm/aa et l'heure sera 06:00:00, 07:00:00, 08:00:00 et la colonne OK est à 0.

Donc comment faire pour remplir mes case vide par la valeur qu'il faut ?

j'ai pensé à supprimer la colonne heure car étant la même dans chaque fichier 24lignes une par heure et qui commence à 06:00:00 mais comment faire ?

et ensuite plus compliqué comment pour les date car dans 1 fichier il y a 24h de production : de 06h00 du matin à 05 le lendemain.

Je vous mon fichier excel ou dans la requête vous pouvez regarder le travail fait sur l'exemple de fichier.

Merci d'avance

13ex11.xlsm (158.27 Ko)

Bonjour

C'est toujours le même projet ?

Tu n'as toujours pas mis ton profil à jour...

Sans fichier csv en exemple, on n'a accès à rien donc on ne peut répondre...

oups pardon sa y est le profil est à jour. D accord j ai oublié de lettre des csv en exemple. Ce n'est pas tout à fait le même projet. Cette fois ci je vais vraiment essayer de me casser la tête. C'est pour sa je posterai juste quelques détails que je n'arrive as à résoudre en ayant recherché. j ai vraiment envie de comprendre car c est passionnant. Et tellement satisfaisant de résoudre les difficultés. A la fin je te montrerai le résultat et tu pourras me donner ton avis. Je posterai demain quelques csv. Merci en tous cas

voila quelques fichier log :

Vous constaterez que pour l'instant je travail sur une petite partie de mes colonnes. En faite je vais créer une requête par groupe de colonne (environ 6 colonne = 1 groupe) parque 1 groupe = un graphique

7ex-2.zip (26.31 Ko)

et que j'arrive mieux à travailler les données. Bref, le problème est que les csv générés manque parfois de données et génère du coup des erreurs. Il serait simple pour moi de les supprimer. Mais je ne peux pas car admettons qu'il manque la production de 06:00:00 à 10:00:00 donc 4 lignes il faut que ma table final sache que la production était de 0 et non inexistante. Le problème est que quand il manque des données il manque également la date et l'heure correspondante. voila les csv

Bonjour

Plusieurs problèmes par rapport à l'exemple :

  • tu filtres sur l'année de création mais tes exemples n'ont pas cette année
  • ta requête conserve les colonnes 1, 2 et 121 mais aucune n'est intitulée "OK"
  • tu parles des 1ères lignes vides mais dans le fichier 140821_TICO2_Log.csv ce ne sont pas les premières lignes qui sont vides mais il y a des trous au milieu des 24 heures
  • les dates des lignes d'un même fichier csv n'ont pas la même année

alors l'année noté dans les log est ainsi : AAMMJJ. Dans power query je fais le traitement pour les mettre compréhensible. Oui effectivement il peux y avoir des heures vides à n'importe quel endroit de la journée. c'est pour cette raison que j'aimerai pouvoir remplir ces zones vides par la date et l'horaire correspondante. Sachant que la je travail avec les dates dans les fichiers log mais il est possible d'utiliser le nom de fichier sachant qu'il est généré avec la date également à l'envers mais il est utile car exemple le 14 janvier : la journée commence à 6h et finit à 5h le lendemain. Il y a donc deux jours dans un fichier (24h). mais je considère que le 14 janvier correspond au 14/01/21 06:00:00 au 15/01/2021 05:00:00. En se qui concerne la colonne 121 quand j ouvre le log dans excel il s'agit de la colonne OK en DI.

92021.zip (740.04 Ko)

La je te joins tous les log de 2021

voila un fichier correspondant à la source envoyée

7ex2021.xlsm (154.35 Ko)

Re

DI c'est 113 pas 121...

Une solution ci-joint : le traitement différencie automatiquement les fichiers ayant les 24 heures des autres et complète les autres à partit d'une table des 24 heures

15skynet2b.xlsm (135.59 Ko)

Se que tu as fait est excellentissime. Néanmoins dans un souci de traitement ultérieur en tcd ou autres ne penses tu pas qu'à la place des dates je devrais mettre les noms de fichiers transformés en date. Je m'explique dans le tableau on peut voir que de 06:00 = 05:00 il y a 2 jours mais dans la société on considère les données de 24h sur le jour j-1. Dans mon cas es ce utile de procéder ainsi ?

en tous merci beaucoup pour sa. A présent je vais créer un tableau qui va récupérer les 24 première ligne du tableau généré par la requête. Ce ma permettra de créer un graphique qui changera en fonction des dates ou plages de dates sélectionnées une idée ?

pourquoi il me dit quand j'adapte la source pour la modifier avec les noms de fichier : donc je modifie la source et la j'ai une erreur sur la fonction Expression.Error : Le nom « Traitement » n'a pas été reconnu. Veuillez vérifier qu'il est correctement orthographié.

= Table.AddColumn(#"Fichiers masqués filtrés1", "Traitement", each Traitement([Folder Path]&[Name

pardon j'ai fermé le fichier et sa marche j'essai de comprendre maintenant mais c' pas simple surtout la fonction

RE

8skynet2c.xlsm (135.86 Ko)

merci beaucoup. je vais essayer de faire la même avec le reste de mon fichier. Au vue du nombre de colonne je vais partir sur plusieurs requête : une par graphique. Qu'en penses tu ?

RE

Il vaut peut-être mieux découper après une fois toutes les lignes récupérées.

Tout dépend s'il y a un lien à établir avec les premières colonnes

Je viens d avoir une idée imaginons que je garde toute mes colonnes car elles ont toutes le même lien avec les nom_fichier et les heures (24) . Ensuite je sélectionné mes deux colonnes et je depivote toute les autres colonnes. J ai entendu que le moteur de power query est plus performant avec le moins de colonne possible... cela va résoudre mon problème car normalement dans les log il y a un titre pour 5 colonnes. J ai effacé ces titres afin de mettre le nom de mes colonnes en en têtes. Je vais dans la bonne direction ?

Je comprends je viens d'essayer mais je n'arrive pas à avoir mes colonnes ainsi :

Nom de fichier (date), Heure (les 24h), titre qui regroupe 8 colonnes (ex CP Press ), colonne : Total, OK, NG, running, error, no components, stopping, error(times) et en dernier bien sur le nombre correspondant. Quand j'ai fait dépivoter les colonnes au final sa me donne rien. La j'avoue que je comprends pas j'zi pourtant regarder des exemples.

voila se que j'ai fait. Je ne comprends pas pourquoi je ne vois plus mes valeurs, pourquoi mes colonnes se sont mélangées. Le fichier étant trop lourd voici le code :

Fichier exemple : let
Source = Csv.Document(#"Paramètre de l'exemple de fichier1",[Delimiter=",", Columns=119, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Plage de lignes conservée" = Table.Range(Source,0,26),
#"En-têtes promus" = Table.PromoteHeaders(#"Plage de lignes conservée", [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"", type text}, {"_1", type text}, {"Line", type text}, {"_2", type text}, {"_3", type text}, {"_4", type text}, {"_5", type text}, {"OM3930 CP press", type text}, {"_6", type text}, {"_7", type text}, {"_8", type text}, {"_9", type text}, {"_10", type text}, {"_11", type text}, {"_12", type text}, {"OM3931 PL caulking", type text}, {"_13", type text}, {"_14", type text}, {"_15", type text}, {"_16", type text}, {"_17", type text}, {"_18", type text}, {"_19", type text}, {"OM3932 VB press", type text}, {"_20", type text}, {"_21", type text}, {"_22", type text}, {"_23", type text}, {"_24", type text}, {"_25", type text}, {"_26", type text}, {"OM3933 COVER press", type text}, {"_27", type text}, {"_28", type text}, {"_29", type text}, {"_30", type text}, {"_31", type text}, {"_32", type text}, {"_33", type text}, {"OM3934 OR assy1", type text}, {"_34", type text}, {"_35", type text}, {"_36", type text}, {"_37", type text}, {"_38", type text}, {"_39", type text}, {"_40", type text}, {"OM3935 OR assy2", type text}, {"_41", type text}, {"_42", type text}, {"_43", type text}, {"_44", type text}, {"_45", type text}, {"_46", type text}, {"_47", type text}, {"OM3937 CASE caulking", type text}, {"_48", type text}, {"_49", type text}, {"_50", type text}, {"_51", type text}, {"_52", type text}, {"_53", type text}, {"_54", type text}, {"OM3938 Electric check", type text}, {"_55", type text}, {"_56", type text}, {"_57", type text}, {"_58", type text}, {"_59", type text}, {"_60", type text}, {"_61", type text}, {"OM3939 Pressure setting1", type text}, {"_62", type text}, {"_63", type text}, {"_64", type text}, {"_65", type text}, {"_66", type text}, {"_67", type text}, {"_68", type text}, {"OM3940 Pressure setting2", type text}, {"_69", type text}, {"_70", type text}, {"_71", type text}, {"_72", type text}, {"_73", type text}, {"_74", type text}, {"_75", type text}, {"OM3941 Pressure setting3", type text}, {"_76", type text}, {"_77", type text}, {"_78", type text}, {"_79", type text}, {"_80", type text}, {"_81", type text}, {"_82", type text}, {"OM3942 Pressure setting4", type text}, {"_83", type text}, {"_84", type text}, {"_85", type text}, {"_86", type text}, {"_87", type text}, {"_88", type text}, {"_89", type text}, {"OM3943 Marking", type text}, {"_90", type text}, {"_91", type text}, {"_92", type text}, {"_93", type text}, {"_94", type text}, {"_95", type text}, {"_96", type text}, {"OM3944 Completion work transfer", type text}, {"_97", type text}, {"_98", type text}, {"_99", type text}, {"_100", type text}, {"_101", type text}, {"_102", type text}, {"_103", type text}}),
#"Colonnes renommées" = Table.RenameColumns(#"Type modifié",{{"", "Date"}, {"_1", "time"}}),
#"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Colonnes renommées", {"Date", "time"}, "Attribut", "Valeur")
in
#"Supprimer le tableau croisé dynamique des autres colonnes"

fichier combiné :

let
Source = Folder.Files("C:\Users\christophe.demaretz\Desktop\2021"),
#"Autres colonnes supprimées" = Table.SelectColumns(Source,{"Content", "Name"}),
#"Fichiers masqués filtrés1" = Table.SelectRows(#"Autres colonnes supprimées", each [Attributes]?[Hidden]? <> true),
#"Appeler une fonction personnalisée1" = Table.AddColumn(#"Fichiers masqués filtrés1", "Transformer le fichier à partir de 2021", each #"Transformer le fichier à partir de 2021"([Content])),
#"Autres colonnes supprimées1" = Table.SelectColumns(#"Appeler une fonction personnalisée1", {"Transformer le fichier à partir de 2021"}),
#"Colonne de tables développée1" = Table.ExpandTableColumn(#"Autres colonnes supprimées1", "Transformer le fichier à partir de 2021", Table.ColumnNames(#"Transformer le fichier à partir de 2021"(#"Exemple de fichier")))
in
#"Colonne de tables développée1"

Bonjour

Sans avoir plus d'infos, difficile de répondre avec précision

Déjà tu as plusieurs colonnes OK : tu as pris la 113 ème colonne mais j'ignore pourquoi

Dans les colonnes dont les noms se répètent, certaines sont présentes 14 fois, d'autres 15...

Sur le principe on décroise effectivement puis on recroise sur le nombre de colonnes d'un groupe

Edit : je répondais à ton précédent message

Pas beaucoup de dispo aujourd'hui donc essaies d'expliquer le principe et si j'ai des trous dans l'aprem, je regarderai

je pense que je me trompe complètement. Comment dépivoter un table qui n'a pas les même données. En faite je dois juste faire la même chose que tu as fait en conservant toute les colonnes et en les renommant correctement. Puis une fois le tcd fait je ferai des groupes d'étiquette de lignes

ok je vais tout t'expliquer le plus clairement possible. J'ai un fichier avec des graphiques. (cf production.xlsx) ces graphiques se base sur les données log. Or actuellement ces données sont extraites en vba en choisissant des dates et en faisant des copiers collers en vba. C'est lent et impossible de travailler sur des plages de dates d'avoir des récaps etc. Mon idée est de récupérer les données via power query. de faire un tcd qui génère les même graphique. Le plus dur pour moi est de disposer les données car après, faire le tcd et les graphiques est plus facile. Hier j'ai déjà utilisé ton travail pour faire ceci (cfproductiont3_auto.xlsx). merci de ton aide en tous cas

7production.xlsm (148.30 Ko)
Rechercher des sujets similaires à "probleme date heure power query"