Forum Discussion

Mike1983's avatar
Mike1983
Regular Visitor
2 years ago
Solved

How to count consecutive date ranges in Power Query M?

Hello! Hopefully someone can help me!   I have a table of absence start and end dates (300k rows). Where absences are consecutive (previous end date is the day before the next start date), I want t...
  • dufoq3's avatar
    2 years ago

    Hi Mike1983,

     

    Result:

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ddDRCoAgDIXhd/FaYjuW1bOI7/8atgg7jSbe/PDBdK0lyH005SS6XBeC1QIzev4w3YjpHrKD2RkxCDEKz/htFJ6BWfgFFGYlYrYQzIW88bOQySg8q8xqxGxO4aFP9D4A", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Person = _t, #"Abs Start" = _t, #"Abs End" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Abs Start", type date}, {"Abs End", type date}}, "sk-SK"),
        #"Added Index1" = Table.AddIndexColumn(#"Changed Type", "IndexHelper", 0, 1, Int64.Type),
        #"Added Dates" = Table.AddColumn(#"Added Index1", "Dates", each List.Dates([Abs Start], Duration.TotalDays([Abs End] - [Abs Start])+1, #duration(1,0,0,0)), type list),
        #"Expanded Dates" = Table.ExpandListColumn(#"Added Dates", "Dates"),
        #"Added Index" = Table.AddIndexColumn(#"Expanded Dates", "Index", 0, 1, Int64.Type),
        #"Grouped Rows" = Table.Group(#"Added Index",
            {"Person", "Dates", "Index"}, { {"All", each _, type table}, {" Consecutive Abs Start", each List.Min([Dates]), type date}},
            GroupKind.Local,
            (s,c)=> Byte.From(c[Index]-s[Index] <> Duration.Days(c[Dates]-s[Dates]))),
        #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Abs Start", "Abs End", "IndexHelper"}, {"Abs Start", "Abs End", "IndexHelper"}),
        #"Removed Duplicates" = Table.Distinct(#"Expanded All", {"IndexHelper"}),
        #"Removed Columns" = Table.RemoveColumns(#"Removed Duplicates",{"IndexHelper", "Dates", "Index"})
    in
        #"Removed Columns"