Forum Discussion

Memo-mohammed's avatar
Memo-mohammed
Frequent Visitor
3 years ago
Solved

Lists of Groups by overlapping datetime

Hello Im very new to Power Query and i need help . I have a table :   ID Alarm-ID Sector-id Occurred-On  Cleared-On 281 27020   29/8/2023 12:34 29/8/2023 12:39 832 2312 0 29/8...
  • AlienSx's avatar
    3 years ago

    Hello, Memo-mohammed try this

    let
        Source = your_table,
        sorted = Table.Sort(Source,{{"ID", Order.Ascending}, {"Alarm-ID", Order.Ascending}, {"Occurred-On ", Order.Ascending}, {"Cleared-On", Order.Ascending}}),
        g1 = 
            Table.Group(
                sorted, {"ID", "Alarm-ID", "Occurred-On ", "Cleared-On"}, {{"All", each _}}, GroupKind.Local,
                (s, c) => 
                    Byte.From(
                        List.AnyTrue(
                            {s[ID] <> c[ID],
                            s[#"Alarm-ID"] <> c[#"Alarm-ID"],
                            s[#"Cleared-On"] < c[#"Occurred-On "]}
                        )
                    )),
        g2 = Table.Group(g1, {"ID", "Alarm-ID"}, {{"All", each _[All]}})
    in
        g2
  • AlienSx's avatar
    AlienSx
    3 years ago
    let
        Source = your_table,
        sorted = Table.Sort(Source,{{"ID", Order.Ascending}, {"Alarm-ID", Order.Ascending}, {"Occurred-On ", Order.Ascending}, {"Cleared-On", Order.Ascending}}),
        g1 = 
            Table.Group(
                sorted, {"ID", "Alarm-ID", "Occurred-On ", "Cleared-On"}, {{"All", each _}}, GroupKind.Local,
                (s, c) => 
                    Byte.From(
                        List.AnyTrue(
                            {s[ID] <> c[ID],
                            s[#"Alarm-ID"] <> c[#"Alarm-ID"],
                            s[#"Cleared-On"] < c[#"Occurred-On "]}
                        )
                    ))[All],
        tbl_tx = 
            Table.Combine(
                List.Transform(
                    g1, 
                    (x) => 
                        #table(
                            {"ID", "Alarm-ID", "Max Occured-On", "Min Cleared-On", "Sector-id"}, 
                            {{x[ID]{0}, x[#"Alarm-ID"]{0}, List.Max(x[#"Occurred-On "]), List.Min(x[#"Cleared-On"]), 
                            Text.Combine(List.Transform(List.Sort(x[#"Sector-id"]), Text.From), ", ")}})
                )
            )
    in
        tbl_tx