Страницы: 1
RSS
Power Query Фильтр с параметром (параметр - название файла)
 
Есть много одинаковых файлов, из которых собирается запрос, в который попадают некоторые значения из исходных файлов.

В примере на картинке я нарисовала условно, что выбираются цифры больше 100, но там на самом деле все сложно и может меняться, дублировать запрос в каждый из  исходных файлов - так себе вариант.

Вопрос - можно ли сделать в исходный файлах запросы, которые бы отмечали значения, попавшие в этот большой свод?

По аналогии с решением здесь https://www.excel-vba.ru/chto-umeet-excel/otnositelnyj-put-k-dannym-powerquery/ , где делается "относительная" ссылка на папку с файлами.

Я сделала в исходных файлах аналогичную табличку "Имя файла", запрос к ней, то каждый файл "знает, как его зовут", можно ли сделать так, чтобы каждый файл возвращал из большого свода только свои значения?

На картинке условно - исходные одинаковые файлы => желтый запрос из них со значениями больше 100 и то, что хотелось бы в исходные файлы вытащить обратно - отметки напротив значений, попавших в большой желтый запрос.
Изменено: Xel - 25.05.2018 16:57:29
 
Код
 let
    Источник = Ошибки,
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each ([Data.Имя] = Excel.CurrentWorkbook(){[Name="ТабИмяФайла"]}[Content]{0}[ИмяФайла]))
in
    #"Строки с примененным фильтром"

Я пытаюсь буквально по примеру с относительными ссылками делать. "Ошибки"  это запрос, просто собирающий исходную таблицу.
Ругается "Запрос ссылается на другие запросы или этапы и поэтому не может напрямую обращаться к источнику данных".
На этом мысль остановилась  :cry:  
 
Доброе время суток
Может лучше, как рекомендуют правила, пример файлов в архиве приложить? Или вам ответ тоже картинкой?
 
Мне кажется, что если убрать все к делу не относящееся, то останутся буквально картинки из первого поста. Ответ нужен в виде одной строки, наверное.

Я, наверное, даже лишнее нарисовала.

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

upd. А, может, если я придумаю, как сделать наглядный пример и грамотно спросить, я в процессе сама до чего нибудь додумаюсь.

Например, можно сделать то, что надо, если в файле запроса сделать  поле с названием имени этого файла в каждой строке.
Можно ли это сделать?
Изменено: Xel - 26.05.2018 01:14:31
 
Цитата
Xel написал:
Есть просто файл с запросом. И есть таблица где-то снаружи
Изучите Table.Join и Table.NestedJoin тогда. Если только по
Цитата
Xel написал:
фильтровал таблицу по имени файла, в котором запрос находится?
, то есть над той снаружи, то ещё Table.SelectColumns и Table.Distinct.
P. S. Приношу свои извинения за любопытство, но вы случайно не родственники с JeyCi?
 
Цитата
Андрей VG написал:
Изучите  Table.Join  и  Table.NestedJoin  тогда. Если только по
Я не понимаю, как записать условие с именем файла.

Как понятно для PQ написать "выбрать строки, в которых поле "Имя файла" = имени файла в котором я, запрос, нахожусь".
 
Наверное, велосипед давно изобретен, и не такой странной формы, как я пытаюсь сделать.

Вот файл пример. Оба зеленых листа - это то, что должно быть в исходном файле. Синий и желтый листы - находятся в другом месте и на самом деле представляют из запросы из многих файлов, потому что эталонный список правильных ответов представляет из себя тоже много файлов, которые обрабатываются перед сверкой.

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

Но все равно интересно, как это можно сделать, теоретически.
Изменено: Xel - 26.05.2018 14:43:51
 
Цитата
Xel написал:
Вопрос - можно ли сделать в исходный файлах запросы, которые бы отмечали значения, попавшие в этот большой свод?
Наконец-то дошло до меня, что вы хотите сделать.
Правильно ли понимаю?
Есть книга с запросом собирающая из нескольких книг некоторой папки данные и сопоставляющая их по ключам (номер вопроса) с эталонной таблицей (допустим находящейся в той же книге, что и сам запрос) правильность ответов каждому ключу из папки каждому ключу эталонной таблицы.
Вы хотите сформировать запрос так, чтобы эти результаты попали в исходные файлы папки?

Формально, это не возможно. Power Query только читает исходные данные и на их базе формирует новые данные.
Обходным манёвром может служить тот факт, что к листу книги Excel можно обратиться как таблице базы данных, используя SQL запросы. Да, в таком ключе - это возможно, при некоторых предварительных настройках.
Но для каждой книги вам нужно будет подтверждать доступ и вводит данные о логине (в движке Access это просто, так как всегда есть admin без пароля - это редко меняют).
Насколько это будет удобно? И не проще ли будет написать макрос, который делает тоже самое?
Или прописать в книгах той папки запрос, который по заполнению будет возвращать таблицу - результат сопоставления с эталонной таблице?
Да, в этом случае есть проблема - ушлый пользователь, посмотрев код запроса утянет себе полную эталонную таблицу и легко ответит на вопросы :)  Только - много ли у вас таких умельцев?

Updated
Ещё немного подумав.
Или вы хотите в каждом файле папки создать запрос, который из таблицы результата оценки правильных ответов вернёт только значения, которые соответствуют имени этого файла? Тогда это приём, который описывает Дмитрий Щербаков (ссылку вы на него дали).
Хотя и в этом случае, ушлый утянет нужно ему для правильных ответов :(
Изменено: Андрей VG - 26.05.2018 21:06:33
 
Цитата
Андрей VG написал:
Или вы хотите в каждом файле папки создать запрос, который из таблицы результата оценки правильных ответов вернёт только значения, которые соответствуют имени этого файла?
Да, не трогая исходную таблицу, естественно.
Добавляя ее копию с отмеченными ошибками.  Идея была такой.

Цитата
Андрей VG написал:
Тогда это приём, который описывает Дмитрий Щербаков (ссылку вы на него дали).
Да, я в файле-примере на всякий случай на листе с черным ярлычком нарисовала таблицу с именем файла, и там есть единственный запрос
Но никак не получается написать корректную команду Selectrows по аналогии с примером Дмитрия Щербакова :(  

Цитата
Андрей VG написал:
с эталонной таблицей (допустим находящейся в той же книге, что и сам запрос)
Почти. Эталонной таблицы нет, она - тоже результат запроса по куче файлов, поэтому она находится в одном файле с запросом, проверяющим данные. Сначала формируется эталонная таблица, потом с ней сравнивается.
Поэтому идея делать проверку, собирая эталонную таблицу в каждом исходном файле мне сначала даже в голову не пришла. В шаблон исходного файла сразу зашивать довольно громоздкий запрос, формирующий эталонную таблицу и делающий сравнение.

Но теперь это кажется самым простым выходом, так и сделаю, компьютер железный, пусть пашет :)

Но исходный вопрос зажег любопытство.  
Изменено: Xel - 26.05.2018 23:54:48
 
Тогда это процесс из двух этапов. По примеру (архив распаковать в папку c:\path - относительные пути не настраивал - пример же).
1. Обновляем запрос "Отчёт" который по файлам с ответами пользователей на первом листе в папке (users) и файлам с правильными ответами (папка answers) по первичному ключу (Номер вопроса) определяет неправильные ответы пользователей + и показывает правильные ответы на них. Результат Отчёта таблица в книге Отчёт папки report.
2. После этого каждый пользователь открывает свою книгу в папке users и обновляет таблицу Результаты. (сделано только в файле Василий.xlsx).

Что-то мы от названия темы ушли совсем далеко. Будьте столь любезны придумать новое название темы и написать его здесь. Модераторы поменяют.
 
Спасибо огромное!
Это то, что надо, о чем мечталось. Несмотря на возможности сделать все другим путем,   этот - самый лучший по разным причинам, организационным, не экселевским.

Двойное обновление запросов, с отправкой информации в разных направлениях - это конечно, да, даже мне понятно.

Спасибо, что поняли чайниковый вопрос, расплывшийся по дереву  :*   Бонусом для себя я еще расширила сознание, подправляя это под исходные файлы   :oops:

Название я не придумаю, может быть, если бы я знала, как все это правильно называть, я бы так не плюхалась. Но в итоге ведь сделан именно фильтр, который работает "по названию исходного файла".
Я могу только еще раз попросить помощи еще и с названием :(
Изменено: Xel - 28.05.2018 22:04:31
 
Xel, спасибо на добром слове.
По аккуратнее с терминологией, когда вы читаете книгу, она вам ничего не посылает. ;)
Страницы: 1
Наверх