Страницы: 1
RSS
Запрос power query: выгружать данне на одном листе через каждые восемь строк
 
здравствуйте. в файле  есть запрос из интернета. теперь нужно получить запросом(запросами) данные о ста тикерах(в файле только 21 тикер). есть ли возможность как то это сделать? одним запросом? или ста запросами? не важно. важно  при получении данных вставлять их в отведенный диапазон. если данных (по отсутствию, по ошибке и т.д.) нет, то отведенный диапазон оставлять пустым. желательно добавить возможность изменить дату. дата брать в К1 или в К3. чтобы потом в каждом запросе не менять вручную. обновлять бы еще потом одной кнопкой или щелчком. в файле три листа " как надо" - любой бы устроил.
не могли бы, я извиняюсь, сделать. сам я точно не сделаю.
 
artyrH, рекомендую разбить вашу задачу на шаги, и попробовав самому, если не получается, то задавать вопрос как сделать то что не получается. Ваш имеющийся вопрос, он комплексный, это для ветки работа. И даже если кто-то вам его тут поможет и сделает, то вряд ли вы сами поймете что и как было сделано.
Принцип как надо делать, я указал вам в этой теме.
Изменено: PooHkrd - 28.12.2018 12:16:55
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо за советы. мне пока Power Query не по зубам. оставлю эту тему на потом.
 
А жаль. По большому счету ваша задача разобрана по косточкам в разных темах на форуме. Нужно просто потратить некоторое время на изучение основ и наработанного материала. Смогли бы творить малые чудеса автоматизации. Тем более что пока не работаете - время есть. Потом его не будет - уж поверьте моему боевому опыту. ;)
Вот горшок пустой, он предмет простой...
 
хотел бы узнать какие шаги надо добавить в запрос, чтобы данные выгружались на одном листе и через каждые восемь строк, как в примере справа. а то выгружаются на отдельные листы, а мне потом их вырезать и вставлять.
а как легче запросы копировать?
 
Смогу помочь только после праздников. Сейчас только с телефона.
Вот горшок пустой, он предмет простой...
 
ok
 
Цитата
artyrH написал:
возможность как то это сделать? одним запросом? или ста запросами?
а в чём проблема? - создать таблицу из 100 линков... потом применить Web.Contents(_[link])... pq и пойдёт рекурсивно грузить все строки - можно в Table.AddColumn()... смотрите синтаксис, пробуйте, pq(как и любой user-friendly soft) сам пишет в чём ошибка, исправляйте, тестируйте дальше... или хотите, чтобы всё сделали за вас? конкретика вопроса непонятна? в чём затруднения?
p.s. файл не смотрела - но если речь о тикерах - видимо, загрузка из i'net...
Изменено: JeyCi - 03.01.2019 10:48:58
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
artyrH написал: выгружались на одном листе
потом Table.ExpandColumn()
Цитата
artyrH написал: и через каждые восемь строк,
можно попробовать логику Table.InsertRows
p.s. к сожалению, тоже пока не могу посмотреть ваш файл
Изменено: JeyCi - 03.01.2019 10:54:50
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
а в чём проблема? - создать таблицу из 100 линков...
глянула файл - поняла в чём проблема
- в разработанном вами интерфейсе - как вы там разглядеть собираетесь, где какой тикер?.. делайте один общий запрос для всего, введя изначально колонку по Ключу - Тикер... и грузите всё сразу... дальше разгребайте это всё как понравится для любой нужной вам репрезентации... а то так и будете по-штучно копи-пастать... успехов
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
где какой тикер?
в новом файле прикручен тикер. необходимость соблюдать расстояние в восемь строк отпадает. только при обновлении сразу десяти запросов через две минуты начинают выскакивать сообщения о недостатке времени, а планируется сто запросов. нужен другой способ.
 
Цитата
artyrH написал:
сообщения о недостатке времени, а планируется сто запросов
это,возможно, проблемы сайта, а не PQ... у меня на ~500 запросов начинал спрашивать  всякое разное... поэтому сначала гружу на диск через vba - CreateObject("MSXML2.XMLHTTP") - потом парсинг в PQ загруженного... но это отдельная история...
p.s. но идею об отпадании 8 строк вы поняли правильно - вам же и самому легче будет видеть от какого тикера страйки вы смотрите... -
P.P.S. рассмотрите всё-таки возможность все тикеры изначально в 1 SourseTable взять вместе с линками... и потом наподобие AddColumn(.., "loaded", each Web.Content(link)), и дальше парсите их ВСЕ разом через Table.TransformColumn(), если они все парсятся по одной схеме(эта рекурсия по каждой строке даст распарсенную таблицу в каждой строке) >> потом Expand это дело (раздвиньте вложенные таблички)...  ИТОГ: будете иметь 1ТАБЛИЦУ, но с указанием ключевого поля Тикер - и соответствующие строки-страйки... можете Условным форматирование отметить 1-ю строку каждого тикера - и будет достаточно визуально воспринимаемо... только бегать по листу всё равно придётся, чтобы увидеть тикер, их ведь 100*n строк, хотя в таком виде как у вас - вы и так бегаете по листу...
ЭТО ведь и есть Сила PQ - работать с вложениями , потом раздвигать их, чтобы отобразить - using Granularity в глубину (как и возможность работать в пределах Group по ширине таблицы) - всегда может дать вам прирост по скорости (вместо того чтобы тупо лопатить всю таблицу построчно....а вы ещё делите на 100 отдельных разрозненных таблиц... Алгоритм уже выстраивайте сами... но не забывайте Edge этого нового инструмента...
не удобно мне сейчас пробовать набросать вам код - поэтому чисто идеей вас подталкиваю - избавьтесь вы от 100 таблиц - сделайте ОДНУ! не могу понять ваше стремление к такой мульти-модальности вашего внешнего вида ваших идентичных по сути и по обработке (если не ошибаюсь) данных...
Изменено: JeyCi - 08.01.2019 08:22:06
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
возможно, проблемы сайта, а не PQ
не могу знать чьи проблемы, только такой вариант мне точно не подойдет. другие сайты с таблицами фондовых опционов мне не известны.
вообще я тяну значения функцией Rtd из TOSа. по пятьсот тикеров за раз в течение двух минут получаю. хотел сделать параллельно еще один канал для сравнения через PQ. с PQ знаком недели две, поэтому ничего толком не получается.
Цитата
JeyCi написал:
избавьтесь вы от 100 таблиц - сделайте ОДНУ!
с удовольствием бы, только у меня нет понятия как это сделать. формулами Excel могу составить списки тикеров с линками, а дальше, в PQ ничего не могу. мне пишут воспользуйся такой то функцией, но я даже в синтаксисе еще парюсь. сижу и читаю что там на этот раз, токен или правую скобку не поставил. хотел бы увидеть в коде, то что вы советуете.
а так не партесь, если все станет. вариант первый меня устраивает.
 
Цитата
JeyCi написал:
возможность все тикеры изначально в 1 SourseTable
просто из таблицы линков как-то так загрузка - попробуйте
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"links", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "TK", each  Text.Split(Text.Split(_[links],"="){1},"&"){0}),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"TK", "links"}),
    load = Table.TransformColumns(#"Reordered Columns", {"links", each Web.Page(Web.Contents(_))})
in
      load
потом ваш парсинг стрэдлов (насколько вижу из линков) - не вникаю, парсить за вас не хочется - неудобно с ноута - попробуйте рекурсию через Table.TransformColumns(tbl, {"links", each let ... in ...}) и т.д.
Изменено: JeyCi - 07.01.2019 11:31:33
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, спасибо Вам за запрос в #14. просматривая предыдущие мои темы, только сегодня понял как работает Ваш запрос)
уверен что буду применять
Страницы: 1
Наверх