Forum Discussion
Split a line into 2 lines in Power Query according to conditions
- 2 years ago
Bonjour Julbak
Une possibilité est de filtrer les lignes concernées,
de remplacer une première fois la date heure de début par la même date mais à 5:00,
de remplacer une seconde fois la date heure de fin par la même date mais à 4:49:59
et de recombiner le tout avec les lignes de départ qui ne sont pas concernées par le critère.
EDIT : utilisation de Table.TransformColumns au lieu de Table.ReplaceValuelet
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCnfyVtJRcs1TSDm8Mi2xtATIMTDXNzDVNzIwMlEwMLQytEQTMgYJxerAtPok5iWn5qbmlSikpCrkZKbnpaKqNzS1MjTHEDIyRjLC5fDKktTkksz8PIVcIDMxB8NGU2M0ITMrYzOl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Code Declaration" = _t, #"Description Declaration" = _t, Debut = _t, Fin = _t]),
Type_date = Table.TransformColumnTypes(Source,{{"Debut", type datetime}, {"Fin", type datetime}}),
Hors_Filtre = Table.SelectRows(Type_date, each not(Time.From([Debut]) < #time(5,0,0) and Time.From([Fin]) > #time(5,0,0) )),
Filtre = Table.SelectRows(Type_date, each Time.From([Debut]) < #time(5,0,0) and Time.From([Fin]) > #time(5,0,0) ),
Modif_Debut = Table.TransformColumns(Filtre,{{"Debut", each DateTime.From(Date.From(_))+#duration(0,5,0,0), type datetime}}),
Modif_Fin = Table.TransformColumns(Filtre,{{"Fin", each DateTime.From(Date.From(_))+#duration(0,4,59,59), type datetime}}),
Table_Finale = Table.Combine({Hors_Filtre, Modif_Fin, Modif_Debut})
in
Table_FinaleStéphane
Salut Stéphane,
Merci beaucoup pour ta réponse et désolé pour la tardive de mon côté.
J'ai regardé je vais essayer quand j'aurai le temps mais à première vue je vois l'idée du code. Je pourrai l'adapter au besoin dans ma BDD.
Je note comme la solution car comme je suis un newbie en langage M, cela me donne une très bonne base pour le faire
Merci encore
Julien