Страницы: 1
RSS
Power Query определить тип данных при добавлении (append) запросов
 
 
Предоставить исходный файл сложно, но вдруг получится без него.

Исходно информация выдирается из сделанных ногами вордовских файлов, чему меня тут ранее на форуме научили. :oops:  

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

Можно ли уже с этой стадии в PQ что-то сделать, чтобы первый числовой столбец всегда звали "Столбец3" и при добавлении этих таблиц друг под друга текст не перемешивался с числами? Или каким-то другим способом не перемешивался.
Для образца зеленая табличка, например.

Число столбцов с цифрами одинаковое во всех табличках и они всегда после текстовых, т.е. выглядят именно так, как на картинках.  
Изменено: Xel - 27.10.2020 18:20:56
 
Доброе время суток
Цитата
Xel написал:
выглядят именно так, как на картинках.  
Тогда для синей таблички можно применить не хитрый приём.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    beforeCombine = Table.RenameColumns(Source, {{"Столбец2", "Столбец3"}, {"Столбец3", "Столбец4"}})
in
    beforeCombine
 
Проблема в том и есть, что они не подписаны, а то можно было бы и вручную.

Есть пара сотен файлов, часть выгружается так, часть так. Функция едет по списку файлов, выдирает табличку, клеит.
Можно ли их как-то одинаково обработать одной функцией?   :oops: Чтобы получался склеиваемый в одну таблицу результат?  
 
Цитата
Xel написал:
что они не подписаны
Ну, тогда давайте добавим немного динамики ;)  
Код
let
    source3Column = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    source4Column = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    last3Column = List.Range(Table.ColumnNames(source3Column), 1),
    last4Column = List.Range(Table.ColumnNames(source4Column), 2),
    renameList = List.Zip({last3Column, last4Column}),
    beforeCombine = Table.RenameColumns(source3Column, renameList)
in
    beforeCombine
Цитата
Xel написал:
Проблема в том
что отсутствует чёткое описание... Нужен не дайджест
 
О, дошло, написание ответа помогло. Две функции, которые лепят все подряд по двум шаблонам. По итоговым таблицам фильтр по второму столбцу "содержит ... или содержит" для одной и "не содержит и не содержит" для другой, там не много вариантов текста.
И эти уже склеивать как подсказано или хоть руками переименовать

остаётся теоретический вопрос для общего развития, можно ли "в лоб" на ходу определять, что с табличкой делать?.
Пишется на ходу на улице :*  пол дня голову ломала и ура. Спасибо!  
Изменено: Xel - 28.10.2020 10:52:48
 
Четкое описание в том, что исходных файлов очень много и после всех чисток у меня осталось 2 варианта таблиц. Которые очень не хотелось вручную делить на синие и жёлтые.

Я пытаюсь сделать функцию, которая по списку файлов заходит в вордовский файл, берет из него табличку, лепит в общую таблицу, идёт в следующий файл, берет табличку...
но для корректной склейки надо понять, "жёлтая" или "синяя" табличка, чтобы свести их в один вид как-то.
Я их пыталась как-то транспонировать и не помню, что ещё, а все, кажется, проще.
 
Цитата
Xel написал:
надо понять, "жёлтая" или "синяя" табличка
Давайте, добавим ещё динамики. Следующий раз без примера, приближённого к реальности, надеюсь вам ответит кто-нибудь другой.
Код
let
    source2 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    source1 = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    source3Column = if Table.ColumnCount(source1) = 3 then source1 else source2,
    source4Column = if Table.ColumnCount(source1) = 4 then source1 else source2,
    last3Column = List.Range(Table.ColumnNames(source3Column), 1),
    last4Column = List.Range(Table.ColumnNames(source4Column), 2),
    renameList = List.Zip({last3Column, last4Column}),
    beforeCombine = Table.RenameColumns(source3Column, renameList),
    combine = source4Column & beforeCombine
in
    combine


Updated.
Код ближе соответствующий смыслу заголовка темы. А то обсуждение пошло куда-то не туда :)
Скрытый текст
Изменено: Андрей VG - 28.10.2020 07:34:40
 
Если структуры таблиц отличаются именно так и на названия столбцов начхать, то можно так:
Код
let
    Source = Excel.CurrentWorkbook(),
    AddedCustom = Table.AddColumn(Source, "tab", each Table.FromColumns( List.Reverse( Table.ToColumns( [Content] ) ), Table.ColumnNames([Content]) ) ),
    tab = Table.Combine( AddedCustom[tab] )
in
    tab
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх