Ключевым моментом здесь является создание столбца группировки, который присваивает каждой строке свой выходной номер строки.Вы можете сделать это, посмотрев индекс последней строки с помощью «Новая строка» в Column2
.
Сначала создайте столбец индекса (на вкладке «Добавить столбец»).
СейчасВы можете создать свой пользовательский столбец группировки, взяв максимальный индекс, как описано выше.Формула может выглядеть примерно так:
List.Max(
Table.SelectRows(#"Prev Step Name",
(here) => [Index] >= here[Index] and here[Column2] = "New Row"
)[Index]
)
Ваша таблица должна выглядеть следующим образом:
Теперь мы используем группуПо (на вкладке «Главная») группировка по столбцу Group
и агрегирование по Column1
.
Но мы собираемся изменитьагрегирование от List.Max
до Text.Combine
, поэтому код для этого шага будет
= Table.Group(#"Added Custom", {"Group"},
{{"Concat", each Text.Combine([Column1]," "), type text}})
Теперь таблица должна выглядеть следующим образом:
Отсюда вы можете выполнить Разделение столбца по разделителю (на вкладке «Главная»), используя " && "
в качестве разделителя.
Измените любые имена столбцов по своему желанию и удалите столбец Group
, если нетбольше, чем нужно, и результатом должен быть ваш требуемый вывод.
М-код для всего запроса:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PcQxLzClNVVBRUQBynGAcJR0lv9RyhaD8cqVYHbA6Z7AUUNwxKb8sFVPGCEMKYqQLTn3YbVaAm6iAZgCagwhpR9OB2zWxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type 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", 1, 1),
#"Reordered Columns" = Table.ReorderColumns(#"Added Index",{"Index", "Column1", "Column2"}),
#"Added Custom" = Table.AddColumn(#"Reordered Columns", "Group", each List.Max(Table.SelectRows(#"Reordered Columns", (here) => [Index] >= here[Index] and here[Column2] = "New Row")[Index]), Int64.Type),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Group"}, {{"Concat", each Text.Combine([Column1]," "), type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Concat", Splitter.SplitTextByDelimiter(" $$ ", QuoteStyle.Csv), {"COL1", "COL2", "COL3", "COL4"}),
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Group"})
in
#"Removed Columns"