Страницы: 1
RSS
Power Query: соединение нескольких таблиц в одну общую + автоматизация пути источника файла
 
Здравствуйте.

Имеется лист книги, в котором ведется одна общая таблица. Данная таблица (в примере это 3 столбца) ведется в несколько колон (в примере это 3 таблицы по 3 столбца). Необходимо их соединить в рамках одного запроса. Это возможно?
В примере показал, как я делаю сейчас через 3 запроса + один объединенный.

Благодарю за помощь.
Изменено: EvgeniyLFC - 21.10.2019 13:18:51
 
EvgeniyLFC,
Ответ на вопрос 1, в ваш запрос с названием Append1 вставляете такой код:
Код
let
    Source = Excel.CurrentWorkbook(),
    FilteredRows = Table.SelectRows(Source, each ([Name] <> "Append1")),
    RenameTables = Table.TransformColumns(FilteredRows, {{"Content", each [a = _, b = Table.RenameColumns( a, List.Transform(Table.ColumnNames(a), each {_, Text.BeforeDelimiter( _, "." )}))][b], type table}}),
    Combine = Table.Combine( RenameTables[Content] ),
    DelBlankRows = Table.SelectRows(Combine, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))
in
    DelBlankRows

Остальные запросы к отдельным таблицам можете удалить.

На вопрос 2 ответить в общем-то не сложно, но этим вы нарушаете правило форума: одна тема - один вопрос. Публикуйте его отдельно - отвечу. Можете еще поиском по форуму воспользоваться, тут такие вопросы ранее задавались и ответы на них были получены.
Вот горшок пустой, он предмет простой...
 
PooHkrd, Благодарю. Можете в двух словах объяснить принцип действия?
То есть у меня будут файлы с 4-5-ю таблицами, состоящими из 4-6 колонок. Мне также создавать 5 запросов, затем 1 объединенный, И в объединенный запрос подставлять Ваш код, но он сам сообразит какие колонки с какими объединять?

Проблему №2 вынес в отдельную тему.
 
Цитата
EvgeniyLFC написал:
Можете в двух словах объяснить принцип действия?
Там же по шагам все видно
Сначала при помощи Excel.CurrentWorkbook() получаем список всех именованных диапазонов книги, потом исключаем из него ту таблицу, в которую будет выводиться результат (чтобы его не задублировать). Потом переименовываем все таблицы из столбца Content, потом объединяем их в единую таблицу, потом зачищаем пустые строки.
Цитата
EvgeniyLFC написал:
у меня будут файлы с 4-5-ю таблицами, состоящими из 4-6 колонок
про несколько файлов с таблицами до этого вы ничего не писали. Это я к тому, что это уже отдельная задача и, по идее, нужна новая тема. ;)
Тем не менее, если схематично, то тут несколько вариантов:
1. Все файлы лежат в разных папках, тогда делаем запросы к каждому файлу в отдельности и используем мой запрос для объединения таблиц.
2. Если файлы в одной папке, то делаем запрос к папке, потом мой запрос переделываем в функцию и собираем все таблицы из всех файлов, подробная инструкция как это сделать есть здесь.
3. Все файлы лежат в разных папках, НО имеется умная таблица с путями к этим файлам, тогда делаем один запрос к этой таблице, потом при помощи функции File.Content формируем столбец с бинарным содержимым файлов, а далее все делаем как в пункте 2, как будто все файлы лежат в одной папке.
Вот горшок пустой, он предмет простой...
 
PooHkrd, Я наверное не правильно выразился. У меня несколько файлов, в которых принцип формирования таблиц - колонками. То есть идет таблица с 4-5 столбцами - она занимает столбцы A:E, далее ее продолжение идет на столбцы F:K и т.д. Самая большая такая таблица "растянута" на 6 колон по 6 столбцов в каждой.
По факту Power Query загружает ее всю автоматом. Поэтому приходится создавать 6 разных запросов и потом объединять их. И поэтому принцип запроса мне был нужен.
Вот таких файлов, к сожалению, много.
 
EvgeniyLFC, это вы так экстравагантно ограничение на 1кк строк в Экселе объезжаете?
Вот горшок пустой, он предмет простой...
 
PooHkrd, это кто-то так создал повсеместно на сетевых файлах, а мы мучайся...)
Строк там порядка 10000 штук.
 
А оно создано также как и у вас в примере? Т.е. каждая новая группа столбцов выделена в отдельную таблицу? Или это все единая таблица на листе?
Вот горшок пустой, он предмет простой...
 
PooHkrd, границами они выделены, как отдельные таблицы (продолжение), а по факту - это единая большая таблица.
 
Тогда мой запрос не сработает.
Сделайте корректный по структуре пример, тогда можно будет сделать корректный запрос. Но это уже завтра.
Вот горшок пустой, он предмет простой...
 
PooHkrd, вот такая структура файла идет. Повторюсь, я делаю 6 запросов, а затем в 7-ом соединяю.
 
EvgeniyLFC, теперь все еще запутаннее, т.е. в оригинале никаких умных таблиц нету? Диапазон I:N это продолжение для диапазона C:H ?
И что делать со столбцами Примечание и Отметка?
Вот горшок пустой, он предмет простой...
 
PooHkrd, dct dthyj - С:H, далее I:N, далее P:U и т.д. Столбцы "Примечание" и "Отметка" не нужны.
Да, это не умные таблицы, поэтому я создавал 6 запросов: для C:H, для I:N и т.д., практически одинаковых, потом соединял их.

Собственно, вопрос и был - реально как-то это в одном запросе сделать? Или никак...
 
EvgeniyLFC, реально, но я смогу только завтра.
Вы бы сразу приложили нормальный пример структуры, давно бы получили ответ.
Вот горшок пустой, он предмет простой...
 
PooHkrd,  я, наоборот, простой пример выложил, думал по нему сориентируюсь.
 
PooHkrd, жду от Вас ответ, поможете?)
 
EvgeniyLFC, сегодня малость в запаре, у вас там не так просто все.
Вот горшок пустой, он предмет простой...
 
В общем ваша задачка на самом деле сводится к ранее здесь обсуждавшейся.
Таким образом утаскиваем оттуда универсальную функцию по сборке таблиц с фиксированным количеством повторяющихся столбцов. Потом приводим вашу таблицу к нужному виду и этой функцией собираем все в плоскую таблицу. Пробуйте:
Скрытый текст
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх