Уважаемые форумчане подскажите как можно решить задачу
Имеется таблица в PQ размер которой и имена столбцов каждый раз разные
Хотелось бы объединить сроки таблиц при этом чтоб первое значение имело Название столбца Таблицы по типу: "Фамилия: Авросинов, Имя: Андрей, Дата начала: 07.01.2022, Дата конец:29.01.2022, Город: Тула"
Попытался сделать кроме "Авросинов, Андрей, 07.01.2022, 29.01.2022, Тула" пока ничего не получилось ((
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Type = Table.TransformColumnTypes(Источник,{{"Фамилия", type text}, {"Имя", type text}, {"Дата начала", type datetime}, {"Дата конец", type datetime}, {"Город", type text}}),
Add = Table.AddColumn(Type, "Пользовательский", each
[a = List.Transform(Record.FieldValues(_), each Text.From(_)),
b = Table.ColumnNames(Источник),
c = List.Transform(List.Zip({b,a}), each Text.Combine(_, ": ")),
d = Text.Combine(c, ", ")
][d]
)
in
Add
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
typ = Table.TransformColumnTypes(Источник,{{"Фамилия", type text}, {"Имя", type text}, {"Дата начала", type text}, {"Дата конец", type text}, {"Город", type text}}),
nms = List.Buffer( Table.ColumnNames(Источник)),
lst = Table.ToRows( typ),
f=(x)=>[a = List.Combine( List.Zip({nms, x})),
b = x&{Text.Combine( a,": ")}][b],
#"Преобразовано в таблицу" = Table.FromList(lst, f,nms&{"tt"})
in
#"Преобразовано в таблицу"
Спасибо большое @whateverlover , @nacimjon, что откликнулись на мою просьбу, чувствую учиться мне до вашего уровня знаний в данных вопросах еще долго. Все прекрасно работает, непонятно как быть с функцией
Код
Table.TransformColumnTypes(Источник,{{"Фамилия", type text}, {"Имя", type text}, {"Дата начала", type text}, {"Дата конец", type text}, {"Город", type text}})
которая привязана к названию Столбцов Таблицы, возможно ли уйти от привязки к именам Столбцов Таблицы. Дело в том что у меня в работе рамдомные Таблицы как по размеру так и по названию Столбцов как правило разные. Я решил свой вопрос формулами Excel однако из-за рамдомности Таблиц мое решение не подходит так требуются постоянные правка в формулах что не есть хорошо
Виктор C, можно вообще убрать эту строчку. В результате мы получаем все равно Текст, можно не преобразовывать тип данных в столбцах. Но если надо все-таки изначальным столбцам задать тип, то надо видеть какие варианты названий столбцов и какие типы данных бывают в столбцах бывают. Можно сделать так, ЕСЛИ [Название столбца] СОДЕРЖДИТ "дата" ТО "сделать его datetime ИНАЧЕ text. nacimjon все столбцы привел к тексту, это можно так:
Код
typ = Table.TransformColumnTypes(Источник, List.Transform(Table.ColumnNames(Источник), each {_, type text}))
whateverlover написал: можно вообще убрать эту строчку. В результате мы получаем все равно Текст
Не совсем так. К примеру, если там числа, то и без типизации они будут числами. И дадут ошибку, если с ними делать какие-то текстовые операции. По сути, можно в самой обработке перед какими-то действиями преобразовать значения в текст. У Вас в коде это List.Transform(Record.FieldValues(_), each Text.From(_)). И, по сути, типизация до не нужна. Но если такого преобразования нет и ТС не особо понимает, куда в обработке это добавить, то проще типизировать перед
Виктор C, на каком этапе добавлять этот апостроф? еще непосредственно в excel? а потом после выгрузки на лист снова в excel менять обратно? Ну можно что угодно понаделать, но уж делать в PQ так делать все там есть Text.From