Страницы: 1
RSS
Power Query. При группировке развернуть значения столбца в строку через разделитель.
 
Добрый день.
Подскажите, как перевести таблицу в лист?
Пример во вложении.

При группировке по имени получаем в первом столбце имя, во втором столбце "таблицы". Как оставить только 1 столбец из таблицы, параметр? В дальнейшем этот лист можно вывести в один столбец через разделитель, но это уже не обязательно..

Если решение будет через группировку, есть ли иные решения? Исходных столбцов (не в примере) около 30..
 
посмотрите Здесь
 
Цитата
azma написал:
посмотрите  Здесь
Не могу сказать, что это то. Возможно не понимаю, как применить в редакторе.
Ранее находил способ (уже не могу найти), как-то через функцию это делалось, если не ошибаюсь.
 
Fosly, так надо?
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    ИзмененныйТип = Table.TransformColumnTypes(Источник,{{"имя", type text}, {"парам", type text}}),
    СгруппированныеСтроки = Table.Group(ИзмененныйТип, {"имя"}, {{"Количество", each Text.Combine( _[парам], ", " ), type text}})
in
    СгруппированныеСтроки

Для модераторов, предлагаю название:
Power Query. При группировке развернуть значения столбца в строку через разделитель.
Изменено: PooHkrd - 12.09.2019 09:32:49
Вот горшок пустой, он предмет простой...
 
Можно и в одну строчку  :D
Код
Table.Group(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], {"имя"}, {"Количество", each Text.Combine([парам],", "), type text})

PooHkrd, а такое наименование шагов - ручная доводка напильником или есть возможность так настроить?
Изменено: buchlotnik - 12.09.2019 09:45:52
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, если бы!  :D
Сами - все сами! Я даже гуглил возможность найти ресурс в Экселе где хранятся стандартные наименования шагов, чтобы их подшаманить, но все тщетно. Бесят меня эти решетки с кавычками, спасу нет.
Изменено: PooHkrd - 12.09.2019 09:49:48
Вот горшок пустой, он предмет простой...
 

PooHkrd, спасибо за решение, практически то, что нужно.
Возникли ещё вопросы:

  1. Это можно сделать, не залезая в редактор?
  2. each Text.Combine( _[Вид услуги]  //для чего нужен спецсимвол _?
  3. Возможно сначала список отсортировать?
  4. При наличии более 2х столбцов, остальные пропадают. Как их сохранить?
  5. {{"Количество", each Text.Combine( _[парам], ", " ), type text}} // тут возможно переделать, чтобы оно возвращало не перечисленные через "," значения, а лист?
 
Fosly,
1. Можно
2. Это так называемый итератор. Чтобы было понятнее, при группировке, когда вы выбрали вариант "все строки", в коде формулы было просто each _. Для каждой конкретной строчки за этим символом скрывается та самая таблица в ячейке, к которой я применил формулу.
3. Да, List.Sort()
4. Покажите конкретный пример, будет конкретное решение. Данное решение было для заявленной задачки
5. Да, уберите Text.Combine, и оставьте просто выражение _[парам] это и есть выражение преобразования столбца парам таблицы _ в список.
З.Ы. чтобы сократить количество вопросов настоятельно рекомендую ознакомиться со спецификацией языка М и с описанием типов данных языка М
З.З.Ы. Еще для новичков очень наглядно все разжевано здесь и здесь.
Изменено: PooHkrd - 12.09.2019 11:17:44
Вот горшок пустой, он предмет простой...
 
PooHkrd, забавно, а я пишу просто [парам] без _ и это работает
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, его можно опускать при обращении к конкретной части аргумента (строке/столбцу), а можно не опускать. Лично мне так нагляднее. Аналогично, когда в Table.AddColumn вы пишите [1] + [2], то по факту идет обращение к полю записи, которую из себя представляет строка, т.е. можно записать и так _[1] + _[2] - это будет равносильно. Тут AlexeySpb на эту тему развернутый пост делал. Сохранил себе в закладочки.
З.Ы. Ой, не ту ссылку дал. Вот верная.
Изменено: PooHkrd - 12.09.2019 16:10:06
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх