PowerQuery: как объединить сгруппированные значения?

Если у меня есть следующая таблица (показано на рисунке ниже), как я могу написать сгруппированный запрос, который объединит сгруппированные результаты?

InputTable

для этого примера я хотел бы сгруппировать по LetterColumn соеденение NumberColumn

таким образом, желаемые результаты будут:

ResultsTable

2 ответов


если ваша таблица является источником, и если NumberColumn имеет тип номера, то это будет работать:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ","), type text}})

Table.Group выполняет операцию group by, которая создает таблицу, состоящую из всех строк с одинаковым значением в LetterColumn. _[NumberColumn] дает список значений в столбце NumberColumn в этой новой таблице. The List.Transform часть превращает числа в текстовые значения, и Text.Combine объединяет эти числа вместе с запятой, разделяющей каждое значение.

если вам также нужны окружающие цитаты, вы можете сделать это:

= Table.Group(Source, {"LetterColumn"}, {{"Column", each """" & Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ",") & """", type text}})

"""" представляет символ " и & объединяет два текстовых значения.


вы можете использовать GUI, чтобы сделать это таким образом:

  1. выберите LetterColumn, а затем преобразуйте / GroupBy: enter image description here

  2. Выберите Добавить Столбец / Пользовательский Столбец: enter image description here

  3. нажмите противоположные стрелки в правом верхнем углу нового столбца AllData, чтобы извлечь значения из новых AllData колонка:

    enter image description here enter image description here

  4. удалить столбец AllData.