The trick is to use an additional grouping column:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WckksSVXSUTI0tDI0sDIyUIrViVbyTc1VKC1OTAdJmJiogsWcA0LhYsamEDGXzOJsuKCRAVQQYaAhVgMNsBhogs1AEwwDjbAZaIzFhXDHIBtoaAEUjAUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
#"Changed Type" = Table.TransformColumnTypes(
Source,{{"Column1", type text}, {"Column2", type text}}),
#"Added Index" = Table.AddIndexColumn(
#"Changed Type", "Index", 0, 1, Int64.Type),
#"Integer-Divided Column" = Table.TransformColumns(
#"Added Index", {{"Index", each Number.IntegerDivide(_, 4), Int64.Type}}),
#"Pivoted Column" = Table.Pivot(
Table.TransformColumnTypes(#"Integer-Divided Column", {{"Index", type text}}, "en-US"),
List.Distinct(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Index", type text}}, "en-US")[Index]),
"Index",
"Column2"),
#"Transposed Table" = Table.Transpose(
#"Pivoted Column"),
#"Promoted Headers" = Table.PromoteHeaders(
#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(
#"Promoted Headers",{
{"CPU usage", Percentage.Type},
{"Date", type time},
{"Disk usage", Percentage.Type},
{"Mem usage", Percentage.Type}
}
)
in
#"Changed Type1"