Forum Discussion

Julbak's avatar
Julbak
Frequent Visitor
2 years ago
Solved

Split a line into 2 lines in Power Query according to conditions

Hi the Community   I am very struggling for several months with a condition that I am not able to solve by myself. Indeed, I am working in Production area so i need to create KPI. Today the "Produ...
  • slorin's avatar
    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.ReplaceValue

     

    let
    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_Finale

     

    Stéphane