Forum Discussion

Mahmed1's avatar
Mahmed1
Helper IV
2 years ago
Solved

Split data into right date

Hi - not sure how complexed this is   i have a table where i have  Start Date Time  End Date Time 19/12/23 22:35.  20/12/23 01:00 20/12/23. 08:00.  20/12/23 16:00 etc   all i want to do is if ...
  • tackytechtom's avatar
    tackytechtom
    2 years ago

    Hi Mahmed1 ,

     

    Apologise! 

     

    Here the code in Power Query M that you can paste into the advanced editor (if you do not know, how to exactly do this, please check out this quick walkthrough)

     

    let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrTUNzTSNzJWMDKyMjZV0lEyMoAKGBhaGRgoxepEw4X0FAwsQGJIigzNwIpiAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Start Date Time" = _t, #"End Date Time" = _t]),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Start Date Time", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Start Date Time.1", "Start Date Time.2"}),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "End Date Time", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"End Date Time.1", "End Date Time.2"}),
    #"Renamed Columns" = Table.RenameColumns(#"Split Column by Delimiter1",{{"Start Date Time.1", "Start Date"}, {"Start Date Time.2", "Start Time"}, {"End Date Time.1", "End Date"}, {"End Date Time.2", "End Time"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Start Date", type date}, {"Start Time", type time}, {"End Date", type date}, {"End Time", type time}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type1", "Custom", each { Number.From ( [Start Date] ) ..Number.From ( [End Date] ) }),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"Custom", type date}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Type", "Start Date Time", each if [Start Date] = [Custom] then Text.From ( [Start Date] ) & " " & Text.From ( [Start Time] ) else Text.From ( [End Date] ) & " 00:00"),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "End Date Time", each if [End Date] = [Custom] then Text.From ( [End Date] ) & " " & Text.From ( [End Time] ) else Text.From ( [End Date] ) & " 00:00"),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Start Date", "Start Time", "End Date", "End Time", "Custom"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns",{{"End Date Time", type datetime}, {"Start Date Time", type datetime}})
    in
    #"Changed Type2"

     

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

  • slorin's avatar
    2 years ago

    With Duration.TotalMinutes

     

    let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Add_Date = Table.AddColumn(Source, "Date_",
    each List.Dates(
    Date.From([Start Date Time]),
    Duration.Days(Date.From([End Date Time])-Date.From([Start Date Time]))+1,
    #duration(1,0,0,0))),
    Date_Expand = Table.ExpandListColumn(Add_Date, "Date_"),
    Type_datetime = Table.TransformColumnTypes(Date_Expand,{{"Date_", type datetime}}),
    #"Start Date Time 2" = Table.AddColumn(Type_datetime, "Start Date Time 2",
    each List.Max({[Start Date Time],[Date_]})),
    #"End Date Time 2" = Table.AddColumn(#"Start Date Time 2", "End Date Time 2",
    each List.Min({[End Date Time],[Date_]+#duration(1,0,0,0)})),
    Total_Minutes = Table.AddColumn(#"End Date Time 2", "Total_Minutes",
    each Duration.TotalMinutes([End Date Time 2]-[Start Date Time 2]))
    in
    Total_Minutes

    Stéphane