Страницы: 1
RSS
Power query - добавить в запрос имя исходной таблицы
 
Кажется, это как-то очень просто должно быть и когда я узнаю ответ, будет очень стыдно.

Запрос берет данные из одной таблицы, надо добавить к данным столбец с именем этой исходной таблицы. Или имя листа, на котором она находится.


До варианта сделать запрос ко всему файлу я догадалась. Проблема в том, что нужны три  крошечные таблички из огромного файл, в котором много всего, при запросе к файлу компьютер уходит в астрал, у меня не получилось дождаться и засечь, сколько времени занимает процесс.
Изменено: Xel - 02.03.2018 10:53:45
 
Э-э-э, а в чем собственно вопрос?
Цитата
Xel написал:
Запрос берет данные из одной таблицы, надо добавить к данным столбец с именем этой исходной таблицы.
К каким данным? Откуда они берутся в запросе? Обрисуйте как-то конкретнее проблему - и приложите файл-пример с небольшим объемом данных, который иллюстрирует что есть и что нужно получить.
Вот горшок пустой, он предмет простой...
 
Есть табличка по имени

табФрукты
Фрукт Цена Количество
груша 10 5
яблоко 5 2
Надо получить
Фрукт Цена Количество Источник
груша 10 5 табФрукты
яблоко 5 2 табФрукты
Изменено: Xel - 02.03.2018 12:47:23
 
Табличка вытягивается из того же файла, в котором создается запрос или из внешнего?
Вот вариант, если таблица, берется из того же файла. Если таблица будет из другого файла, то просто поменяйте в шаге Источник функцию.
Изменено: PooHkrd - 02.03.2018 12:57:18
Вот горшок пустой, он предмет простой...
 
Спасибо, но это не то.
У меня условие такое экзотическое - не обращаться ко всей книге. Потому что на этой стадии виснет все. В реальности табФрукты находится в огромном файле с кучей таблиц и запросов. Можно ли как-то обратиться к имени исходной таблицы по имени?

Источник - таблица. Запрос в том же файле, что и источник.

Я, может, рогами уперлась там, где не требуется, просто изначально показалось, что это просто и должно как-то писаться в три слова "добавить столбец, содержимое столбца - имя исходной таблицы".

Неужели нельзя?
Изменено: Xel - 02.03.2018 13:08:32
 
Цитата
Xel написал:
не обращаться ко всей книге
Вот это непонятно. Не обращаться к книге, в которой лежит таблица, которую надо получить. Это как Вы себе представляете? Открыть книгу запросов все равно придется. А уже вытянуть оттуда можно и одну единственную таблицу. Что может быть сложного в обращении к таблице по имени - не знаю. В шаге Источник это прослеживается на ура...Может попробуете как-то более подробно и точно обрисовать проблему?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
= Excel.CurrentWorkbook(){[Name="табФрукты"]}[Content]

Так? Но в таком случае вы теряете возможность добавить имя источника каким либо образом кроме как вручную - Создать столбец и указать название таблицы.
Изменено: PooHkrd - 02.03.2018 13:17:21
Вот горшок пустой, он предмет простой...
 
А если Вашу таблицу сделать умной? И потом в PQ обратиться к этой умной таблице. А не ко всей книге? Можно посмотреть Сборка таблиц из разных файлов Excel с помощью Power Query. Успехов.
 
Цитата
Дмитрий Щербаков написал:
Вот это непонятно. Не обращаться к книге, в которой лежит таблица, которую надо получить. Это как Вы себе представляете? Открыть книгу запросов все равно придется. А уже вытянуть оттуда можно и одну единственную таблицу. Что может быть сложного в обращении к таблице по имени - не знаю. В шаге Источник это прослеживается на ура...Может попробуете как-то более подробно и точно обрисовать проблемуПодозреваю, что если бы могла, то знала бы ответ. Прошу прощения за чайниковое коснозычие.

То, что мне нужно, можно сделать, сделав запрос  "Из файла - из книги". Внешне будет то самое.

 Источник = Excel.Workbook(File.Contents("X:\МногоФруктов.xlsx"), null, true),
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each ([Name] = "ТабФрукты"),

И дальше после этого фильтра разворачивать контент и все прочее.

На стадии вот этого "строки с примененным фильтром"  эксель уходит в астрал, файл громоздкий (с этим тоже можно и нужно что-то сделать). То есть без этого хотелось бы обойтись.


В файле есть 3 очень умные таблички (на самом деле - запросы из других файлов, выведенные на листы).

Из них надо сделать одну, но в ней должна быть информация, из какой таблицы взяты данные.  Просто сам по себе запрос, объединяющий эти три таблицы летает шустро, все нормально. Но в нем не хватает информации "откуда".

Если запрос делать кнопкой "Из таблицы", то источник выглядит так , и в таком случае громоздкость файла PQ не пугает.

Источник = Excel.CurrentWorkbook(){[Name="табФрукты"]}[Content],
....
#"Добавленный запрос" = Table.Combine({#"Измененный тип", ТабФрукты2, ТабФрукты3})
Изменено: Xel - 02.03.2018 13:52:22
 
Цитата
Sertg написал:
А если Вашу таблицу сделать умной? И потом в PQ обратиться к этой умной таблице. А не ко всей книге? Можно посмотреть  Сборка таблиц из разных файлов Excel с помощью Power Query . Успехов.
Я эту статью знаю как отче наш. Даже понимать уже начала :*

Сильно упрощенный аналог описанного там работает и теоретически выдает нужный результат. Но в 20 минут не укладывается, дальше не проверяла.

Есть 100500 вариантов, вплоть до "не выпендриваться и сделать руками", или макрос, или попить чаю, пока запрос "из файла" обновляется. Но меня заклинило на мысли "неужели нельзя?!"
Изменено: Xel - 02.03.2018 13:49:33
 
Цитата
Xel написал:
На стадии вот этого "строки с примененным фильтром"  эксель уходит в астрал, файл громоздкий
любопытно. первый раз с такой проблемой встречаюсь.
Навскидку, если имена таблиц заранее определены, то тогда
Код
Источник1 = Excel.CurrentWorkbook(){[Name="табФрукты1"]}[Content],
Источник2 = Excel.CurrentWorkbook(){[Name="табФрукты2"]}[Content],
Источник3 = Excel.CurrentWorkbook(){[Name="табФрукты3"]}[Content],
AddName1 = Table.AddColumn(Источник1, "Name", each "табФрукты1", type text),
AddName2 = Table.AddColumn(Источник1, "Name", each "табФрукты2", type text),
AddName3 = Table.AddColumn(Источник1, "Name", each "табФрукты3", type text),
Combined = Table.Combine({AddName1, AddName2, AddName3})

То есть банально, руками добавляем столбец с именем.
Изменено: Максим Зеленский - 02.03.2018 14:03:18
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
любопытно. первый раз с такой проблемой встречаюсь.
Тут я слишком чайник, чтобы понять причины. У меня одно объяснение - что большой файл. На тестовом файле, из которого было удалено все лишнее, вариант с запросом к файлу работал, да и вообще способ самый очевидный, я  с него начала.

Но на оригинальном файле каменный цветок не вышел за 3 попытки с перезагрузкой компьютера. Там много листов, таблиц и внешних запросов. Что из этого смутило - мне понять слабо.

Цитата
Максим Зеленский написал:
То есть банально, руками добавляем столбец с именем.
Спасибо. Это самое логичное и простое, наверное.
Я надеялась, что есть волшебная команда, вроде действие такое простое 8-0  
Изменено: Xel - 02.03.2018 14:16:19
 
Цитата
Максим Зеленский написал:
любопытно. первый раз с такой проблемой встречаюсь.
А вот я не в первый. Было дело, добрые люди при добавлении в один из файлов-справочников как-то организовали в нем форматирование несколько тысяч строк на ВСЕ 16 тыс. столбцов в файле, соответственно PQ пытался затащить в запрос весь UsedRange. Запрос начал кушать какие-то невменяемые количества оперативки и зависать на не самой слабой системе.
Подозреваю что-то подобное у ТС. А еще скорее всего установлен Эксель 32 бит.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
добрые люди
Соглашусь, коллега - народ у нас талантливый... Правда, полезного выхлоп не большой.
Xel, попробуйте в отдельный файл скопировать лист с этой таблицей и проверить - также будет? Может там 100500 имён? Пока найдёт нужное.
 
Нет, там имена все живые, таблицы не огромные, used range все ровно по нужному размеру.
Весь файл состоит из пары десятков таблиц-запросов на внешние файлы и парой сводных.


Эти внешние запросы громоздкие - там как раз один запрос берет десяток листов другого файла (на каждом исходном листе примерно 100 столбцов * 500 строк) , это все разворачивает, удаляет строки-столбцы.

Я думала, проблема может быть в них. И вот 3 самые маленькие из этих итоговых таблиц (сами по себе на 2-3 экрана и 8 столбцов - небольшие) надо объединить в одну, с указанием источника.

В отдельном файле, откуда я удаляла все лишнее, кроме нужных 3 таблиц, все летало. Может, при обращении запроса к таблице-запросу PQ начинает обновлять все, причем, 8 раз. Команда "обновить все" работает минуты 3-5.  
Изменено: Xel - 02.03.2018 14:45:53
 
Может эти внешние запросы концептуально неверно сделаны.
Какая задача стоит изначально?
 
Собрать данные за разные годы из не слишком однотипных таблиц, разбросанных в разных местах на сервере. Таблицы немного отличаются, но заголовки столбцов и наименования в одном столбце унифицированы.

Концептуально запросы очень простые. Но работают с файлами без именованных диапазонов - тащат все, что  есть на листе (~100 столбцов 500 строк) удаляют лишние столбцы, фильтруют строки. То есть запрос - обратиться к файлу, отфильтровать листы по какому-то шаблону, в нужных листах развернуть содержимое таблиц, удалить сверху строки с заголовками, удалить столбцы, переименовать столбцы и задать тип данных.  Можно, наверное, облегчить экселю жизнь, если разворачивать не все столбцы, снять на этом этапе лишние галки, но их там зовут "столбец1" .. и т.д. и нужные могут идти под разными номерами. Но он же железный, пусть работает :evil:

И там же несколько запросов к запросам, аналогичных тому, что тут предлагалось неоднократно - запрос на весь файл - фильтр листов и т.д. Такое впечатление, что очередной стал последней каплей и пора переходить к генеральной уборке.

Я просто думала, это так просто - взять и вывести имя таблицы  8-0  
Изменено: Xel - 02.03.2018 18:18:59
 
Цитата
Xel написал:
это так просто - взять и вывести имя таблицы
В общем не сложно, но это требует знания языка, а не поиска волшебной кнопки.
 
Это секрет?

Цитата
Андрей VG написал:
В общем не сложно, но это требует знания языка, а не поиска волшебной кнопки.

В общем не сложно, как минимум один вариант я и сама в стартовом посте написала, еще один с минимальным ручным допиливанием предложил Максим Зеленский (таблиц всего 3, а не 300 - дальше мудрить точно смысла нет).

А про отсутствие именно кнопки у меня было время догадаться еще до  вопроса здесь.  
 
Цитата
Xel написал:
Это секрет?
Да, нет, не секрет :)  Например, вот так.
Страницы: 1
Наверх