Как бы вы преобразовали таблицу с переменным числом местоположений для идентификатора, чтобы местоположения стали столбцами? - PullRequest
0 голосов
/ 06 января 2020

У меня есть таблица с идентификаторами столбцов и местоположением. Идентификатор может иметь несколько (скажем, 5) местоположений. Как преобразовать исходную таблицу в целевую таблицу?

Исходная таблица
ID, местоположение
Здание A, Коридор
Здание B , Задний коридор
дом B, передний коридор
дом C, 1-й этаж
дом C, 2-й этаж
дом C, 3-й этаж

Целевой стол
ID, Местоположение 1, Местоположение 2, Местоположение 3
Здание A, Коридор ,,
Здание B, Задний коридор, Передний коридор,
Здание C, 1-й этаж, 2-й этаж, 3-й этаж

Я пытался транспонировать и поворачивать / отменять, но я не могу получить желаемые результаты.

1 Ответ

0 голосов
/ 07 января 2020

Предполагая, что Таблица1 имеет два столбца ID и Расположение

Выберите таблицу и загрузите в PowerQuery Данные ... Из диапазона таблицы ... [x] таблица имеет заголовки

Выберите / щелкните Щелчок правой кнопкой мыши по столбцу ID Группировать по ... [basic] ... Группировать по: ID ... Новый столбец Имя: Данные ... Операция: Все строки ... Столбец: пусто

Это будет агрегировать все данные для каждого идентификатора в таблицу в своем собственном столбце

Добавить столбец .. Пользовательский столбец ....
Имя нового столбца: Пользовательский ... формула: = Table.Column ([Данные] , "Location")

Это создаст список для каждого идентификатора, в котором есть только местоположения

Нажмите -> <- стрелки вверху столбца Custom, извлечь значения с запятой </p>

Это объединит все уникальные значения для Location с a, чтобы разделить их

Конечный код (который вы также можете вставить, используя Advanced ...)

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"ID"}, {{"Data", each _, type table}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Data],"Location")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ","), type text})
in #"Extracted Values"

Выше имеет преимущество в том, что за ним легче следовать, и его можно выполнять с помощью интерфейса. Если вы хотите получить фантазию, вы можете использовать ниже ... один шаг, чтобы объединить идентификатор и объединить местоположения. Вставить с помощью Advanced Editor

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"ID"}, {{"Custom", each Text.Combine(List.Transform([Location], Text.From), ","), type text}})
in #"Grouped Rows"
...