Страницы: 1
RSS
Передача списков/таблиц/массивов по api через PQ
 
Здравствуйте, по ходу работы возникла необходимость отправки в Power Query больших массивов данных, а именно таблицы с URL-страниц сайта Подскажите пожалуйста, как задать функцию для отправки подобного формата данных по API пример ниже.
Хочу сделать так, что бы переменная URL передавала в запросе api таблицу с адресами сайта, дабы не парсить каждый сайт отдельно.

При таком запросе возникает ошибка типа данных:
Expression.Error: Не удается преобразовать значение типа Table в тип Function.

Excel файл ниже.
Заранее спасибо.
Код
       let

URL = Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content](Источник,{{"Столбец1", type text}})), //переменная(URL) и путь к таблице с URL

Источник = Json.Document(Web.Contents("https://api-metrika.yandex.net/stat/v1/data/pivot?id=2222222&metrics=ym:s:visits,ym:v:users&date1=2019-06-01&date2=today&dimensions=ym:s:month&filters=ym:pv:URL=='"&Text.From(URL)&"'",
    [Headers = [#"Authorization"="OAuth AgA67890-jv-KKKKKKKKK123KKKKKKKKsas"]])),
       in
Источник
 
Вот этим вот
Код
URL = Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content](Источник,{{"Столбец1", type text}}))

это вы чего хотели сказать?
Вот горшок пустой, он предмет простой...
 
Это Переменная которая называется URL
Она стоит в api запросе ниже и выглядит вот так '"&Text.From(URL)&"'
все что после знака равенства, это путь к столбцу в excel в котором находятся адреса сайтов ( URL сайтов )
 
Цитата
navanor написал:
все что после знака равенства, это путь к столбцу в excel в котором находятся адреса сайтов ( URL сайтов )
Вы в этом твердо уверены? Я вот вижу что вы обращаетесь к таблице в текущей книге вот этой частью кода
Код
Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content]

На выходе данный код покажет таблицу, а дальше вы зачем-то вы пытаетесь этой таблице как-будто она функция передать вот такое:
Код
Источник,{{"Столбец1", type text}})

Собственно именно поэтому вам PQ и ругается, что он не умеет обращаться к таблицам как к функциям.
За сим вопрос: вам чего, собственно, хотелося?
Вот горшок пустой, он предмет простой...
 
Доброе время суток
Цитата
PooHkrd написал:
вам чего, собственно, хотелося?
Комплексного руководства - как импортировать данные из интернет с использованием API желательно с демонстрацией в Skype!  :D
 
Цитата
Андрей VG написал:
как импортировать данные из интернет с использованием API желательно с демонстрацией в Skype!
Есть такой курс у Николая!
Изменено: PooHkrd - 05.12.2019 13:21:56
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
За сим вопрос: вам чего, собственно, хотелося?
Мне нужно, что бы переменная 'URL' брала все значения из таблицы 'Таблица21'
но у меня постоянно выбивает ошибку (  Expression.Error: Не удается преобразовать значение типа Table в тип Text.  )
Я изменил путь на Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content] и ошибка осталась

Вообще у PQ есть возможность отправлять через api такую структуру данных как таблица или список ?
Изменено: navanor - 05.12.2019 15:45:26
 
Цитата
navanor написал:
Вообще у PQ есть возможность отправлять через api такую структуру данных как таблица или список ?
У PQ есть возможность отправлять через API любую структуру, которая этим API может быть принята.
Но боюсь что я.метрика вряд ли сможет принмать в адресной строке запрос такой параметр как таблица, скорее всего вы хотите туда запихнуть адрес конкретной страницы сайта.
Я вам уже не первый наводящий вопрос задаю, а вы все упираетесь в свое видение решения, которое вам кажется правильным.
Опишите четко задачу: есть таблица с адресами, есть шаблон адресной строки Я.метрики, хочу чтобы в этот шаблон можно было в качестве параметра подставлять адреса из строк таблицы и получить на выходе таблицу, в столбцах которой напротив каждого адреса будут нужные мне параметры посещаемости этой страницы. Вот прилагаю пример как я разбираю одну ссылку, а мне надо их разобрать много.
Вам ведь это нужно?
Вот горшок пустой, он предмет простой...
 
Да, я хочу в один запрос впихнуть кучу URL адресов, и на выходе иметь таблицу с параметрами метрики посещения этих страниц
Изменено: navanor - 05.12.2019 16:05:58
 
navanor, не понятно что у вас там. попробуйте так начать
Код
let
    URL = Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content](Источник,{{"Столбец1", type text}}), //путь к таблице с URL

    data_1 = Excel.CurrentWorkbook(){[Name="Data1_1"]}[Content]{0}[Data_1], //путь к ячейке с датой1
    data_2 = Excel.CurrentWorkbook(){[Name="Data1_2"]}[Content]{0}[Data_2], //путь к ячейке с датой2

    metrica = Excel.CurrentWorkbook(){[Name="Metrics"]}[Content]{0}[Metrics], //путь к ячейке с метриками
a= Excel.CurrentWorkbook(){[Name="Таблица21"]}[Content],
    Custom = Table.AddColumn(a, "a", each Json.Document(Web.Contents("https://api-metrika.yandex.net/stat/v1/data/pivot?id=200000035&metrics="&Text.From(metrica)&"&date1="&Text.From(data_1)&"&date2="&Text.From(data_2)&"&dimensions=ym:s:month&filters=ym:pv:URL=='"&Text.From([Столбец1])&"'",
    [Headers = [#"Authorization"="OAuth AgAAAAAojv-cAAX70ллллллллллPgcyJr_s"]])))
in
Custom
 
navanor, или так. у меня не работает. другого варианта не придумаю
 
У меня возникла схожая потребность, скажите пожалуйста, может быть как-то можно реализовать похожую идею через циклы?
я не знаком с PQ, но есть предположение как это можно было бы реализовать

Как я понял, этому человеку нужно отправить большое количество данных через api в я.Метрику
в таблице которую он хотел реализовать должны были быть какой-то массив из страниц, которые должны подставляться в шаблон с GET запросом через API к я.Метрике, но проблема в том, что я.Метркиа не понимает такой тип данных как таблица, она воспринимает только строку, по этому задумка изначально провальная

У меня мысль такая, а что если сделать данный процесс в цикле, мол... подставлять в API запрос каждый раз новую строку из таблицы пока в данной таблице не закончатся строки, только вот я не совсем понимаю, как это можно сделать
Если разбивать по этапам, то наверное нужно сделать так:

1. Создать таблицу с адресами
2. Создать функцию которая будет считать количество строк в таблице ( Table.RowCount )
3. Затем создать цикл, который будет брать каждый раз строку из таблицы с шагом в 1 строку (Table.Range)
4. Затем нужно подставить эту строчку вместо переменной в API запросе
5. Вывод данных в конечную таблицу

Извиняюсь заранее за свое слабое понимание данной темы
 
Allian, я прошу прощения, а вы собственно запрос artyrH проглядывали? Он там равно вот то же самое и делает. Другой вопрос что у него нету возможности авторизоваться, а значит выгрузить результаты запроса. Но хотелку ТС он выполнил в полном объеме.
Вот горшок пустой, он предмет простой...
 
Я ничего не понимаю в том, что написано в коде у его, если честно )
 
Цитата
Allian написал:
У меня возникла схожая потребность  ..  какой-то массив из страниц, которые должны подставляться в шаблон с GET запросом через API к я.Метрике
если есть упомянутый массив и GET запрос, то выкладывайте.
 
Здравствуйте!! к сожалению не на данный момент, поскольку я нахожусь не на работе, не могли бы вы поделиться своими мыслями и опытом, на примере запроса, который прислал ТС

можете прокомментировать код, где что и как работает?)
 
Allian, опыта у меня маловато. что там комментировать? как вы и хотели с шагом в одну строку формируются запросы к яметрикам. типа тот самый желанный ЦИКЛ. для наглядности изменил запрос. теперь видно что получается запрос со значениями из текущей строки.
 
ВООУ!
Круто!!
Спасибо вам большое, вы мне очень помогли, все работает, я даже и не предполагал, что это можно сделать буквально в 2 строчки...
Страницы: 1
Наверх