#excel #powerbi
#excel #powerbi
Вопрос:
Я застрял на этом некоторое время, я знаю, как создавать строки со столбцами, но не как создать комбинацию из нескольких в один. =) Это данные
Id M1 M1Comments M2 M2Comments M3 M3Comments
1 Yes "Blabla" Yes "Blabla" No "Blabla"
2 Yes "Blabla" No "Blabla" No "Blabla"
3 No "Blabla" No "Blabla" No "Blabla"
И конечный результат должен выглядеть так
Id M Value Comments
1 M1 Yes "Blabla"
1 M2 Yes "Blabla"
1 M2 No "Blabla"
2 M1 Yes "Blabla"
2 M2 No "Blabla"
2 M3 No "Blabla"
3 M1 No "Blabla"
3 M2 No "Blabla"
3 M3 No "Blabla"
Комментарии:
1. Из ваших исходных 7 столбцов вы можете создать новую строку со столбцами 1; «M1»; 2; 4 («M1» — фиксированный текст!) и 2; «M2»; 4; 5 и 3; «M3»; 6; 7 Результатом должен быть ваш вывод. (это может потребовать только сортировки)
2. Вы можете сделать это в Power Query Editor, используя опцию Unpivot.
Ответ №1:
- Отключите все, кроме
Id
. - Разделите столбец атрибутов.
- Поверните второй столбец из разделения.
- Переименуйте столбцы по желанию.
let
Source = < Your Data Soucre Here >,
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Id"}, "Attribute", "Value"),
#"Split Column by Position" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByPositions({0, 2}, false), {"M", "Comment"}),
#"Pivoted Column" = Table.Pivot(#"Split Column by Position", List.Distinct(#"Split Column by Position"[Comment]), "Comment", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"", "Value"}})
in
#"Renamed Columns"
Комментарии:
1. Я попытался выполнить 4 шага. 1. Легко 2. Разделите столбец на позицию 0,2… В результате заголовки (Id, Attrebute, Value), такие как Id 1, становятся 6 строками. Строка 1 1, M1, Yes и строка 2 1, M1Comments, «Blablabla». Я отмечаю столбец атрибутов и нажимаю разделить «по количеству символов», затем ввожу 2 и нажимаю один раз как можно дальше влево. Это создает новый столбец с именем Attrubute2, каждый другой теперь пуст, а другой говорит комментарии. Теперь я стою на месте
2. Сведите столбец Attribute2 со значением в качестве столбца значений (выберите не агрегировать из дополнительных параметров).
Ответ №2:
Вы можете попробовать приведенный ниже предварительный редактор кода для таблицы для достижения желаемого результата-
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUYpMLQaSyfm5ual5JQqGCrlYBY2AXL98VDFjpVidaCUjDOVGEDNQlBthMcIIZoQxuowxFhOMsZhgDDYhFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Id = _t, M1 = _t, M1Comments = _t, M2 = _t, M2Comments = _t, M3 = _t, M3Comments = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Id", Int64.Type}, {"M1", type text}, {"M1Comments", type text}, {"M2", type text}, {"M2Comments", type text}, {"M3", type text}, {"M3Comments", type text}}),
// New steps started from here
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Id"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Columns", "Custom", each if Text.End([Attribute],8) = "Comments" then [Value] else null),
#"Filled Up" = Table.FillUp(#"Added Custom",{"Custom"}),
#"Filtered Rows" = Table.SelectRows(#"Filled Up", each not Text.Contains([Attribute], "Comments")),
#"Renamed Columns" = Table.RenameColumns(#"Filtered Rows",{{"Attribute", "M"}, {"Custom", "Comments"}})
in
#"Renamed Columns"
Ввод-
Вывод-
Комментарии к условию имя столбца должно содержать текстовые комментарии
Комментарии:
1. Привет, я рад за код, но чтобы иметь возможность применять это в большем количестве проектов, мне нужно больше пошаговых или изображений
2. Это должно работать для большего количества столбцов, когда имя столбца комментариев соответствует указанному выше формату именования.