Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
PQ, Как организовать функцию с рекурсивным запросом по API?, как забирать данные, если ресурс отдает информацию частями, с указанием параметра для следующего запроса
 
Андрей VG, тут вдруг выяснилось, что PowerBI считает оба ваших запроса - динамическими, и напрочь отказывается обновляться по расписанию.

К счастью удалось найти лазейку через RelativePath

вот такой апгрейд получился))
Код
let
    baseQuery = "https://0pryln0q2f.execute-api.eu-central-1.amazonaws.com/API/search?searchAfter=",
generate = List.Generate(
        () => [response = Json.Document(Web.Contents(baseQuery))],
        each [response] is record,
        each [response = Json.Document(Web.Contents(baseQuery ,
        [
  RelativePath="",
  Query=[searchAfter=Text.From([response][searchAfter])]
 ]
        ))],
        each [response][ids]
    ),
    result = List.Combine(generate)
in
    result

оставлю тут решение для следующих поколений искателей ;)

PQ, Как организовать функцию с рекурсивным запросом по API?, как забирать данные, если ресурс отдает информацию частями, с указанием параметра для следующего запроса
 
Андрей VG,  :)  точно говорят, чем код короче и проще - тем лучше)

в скорости разницы не заметил, а вот внедрять проще будет второй вариант)

Спасибо еще раз)
PQ, Как организовать функцию с рекурсивным запросом по API?, как забирать данные, если ресурс отдает информацию частями, с указанием параметра для следующего запроса
 
Андрей VG, спасибо! погонял - все работает.
Единственное в List.Accumulate в ссылке searchAfter= оставил пустым, чтоб не упиралось в верхний лимит и не приходилось руками лазить поправлять границу.

Благодарю!
PQ, Как организовать функцию с рекурсивным запросом по API?, как забирать данные, если ресурс отдает информацию частями, с указанием параметра для следующего запроса
 
Может кто то сможет заставить эту схему работать?
Код
(optional startDate as text, optional continuationToken as text, optional loop as number, optional data as list) =>
let
 
   Source =if continuationToken = null 
    then Json.Document(Web.Contents("https://0pryln0q2f.execute-api.eu-central-1.amazonaws.com/API/search?dateFrom=" & startDate & ""))
  else Json.Document(Web.Contents("https://0pryln0q2f.execute-api.eu-central-1.amazonaws.com/API/search?searchAfter=" & continuationToken & "&dateFrom=" & startDate & ""))
  ,
   token = Text.From(Source[searchAfter]),
   currentData = Source[ids],
   appendedData =
   if currentData is null and data is null then {}
   else if data is null then List.Combine({{}, currentData}) 
   else if data is null then List.Combine({data,{}})
   else List.Combine({data, currentData}),
   loopNum = loop + 1,
   output =
   if Source is null  or loopNum > 100
   then
   if appendedData is null then {1,2,3} else appendedData
   else @#"GET"(startDate, token, loopNum, appendedData)
in
   appendedData

Уж вроде все предусмотрел, все равно не выходит. Не могу понять в чем причина((

PQ, Как организовать функцию с рекурсивным запросом по API?, как забирать данные, если ресурс отдает информацию частями, с указанием параметра для следующего запроса
 
Добрый день!

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

Выглядит это так:
Делаем первый запрос, нам возвращается ответ в таком формате
Код
 "totalHits": 23680,
    "searchAfter": 161978,
    "ids": [
        167057,
        167056,
        167055,
        167054,
Чтобы сделать второй запрос на следующую порцию номеров надо к этому же запросу добавить searchAfter=161978, который содержался в ответе на первый запрос

На итог, требуется получать куски списка до тех пор, пока ответ ресурса не станет пустым
Код
[]
и склеить полученные куски в один список.

Линк на ресурс:
"https://0pryln0q2f.execute-api.eu-central-1.amazonaws.com/API/search?searchAfter=&dateFrom=2..."
Интуиция подсказывает что нужно сделать функцию, которая будет получать дату и рекурсивно выполняться для получения всех кусков и отдавать склеенный лист.

Самому не получается сделать, опыта и знаний не хватает, я либо получаю циклическую ссылку, либо только первый кусок.
Помогите, пожалуйста!

начал с этого и дальше застрял
Код
(x)=>
let
    startdate = (Date.ToText(x, "yyyy-MM-dd")), 
    
    idlist  = Json.Document(Web.Contents(
      "https://0pryln0q2f.execute-api.eu-central-1.amazonaws.com/API/search?searchAfter=&dateFrom=" & startdate,
      [
        Query=[dateFrom=startdate]] 
      )),
    searchAfter = idlist[searchAfter]
    
in
    searchAfter
Как открыть Excel файл, лежащий в OneDrive, Нужно открывать с локальным путем в место ссылок типа( https://d.docs.live.net/8a............)
 
Доброго дня!
Вопрос не сколько по самому экселю, сколько по облачной структуре Microsoft, с интегрированными в эксель элементами.

У меня есть файл, с запросами в папки, и настроены относительные пути, из какой папки что забирать и как обрабатывать.
Это стало необходимым, так как приходится обновлять запросы на разных машинах (дом, работа, ноутбук). Естественно на каждой машине получались свои пути до папок, поэтому я сделал их относительными от корневой где лежит файл.
Файл лежит в OneDrive который подключен на всех машинах. Я на любой его открываю и вижу последние изменения, сохранения. Тут все гуд.

И все бы хорошо, но файл стал открываться не с локальным путем вроде (C:\Users\kpl\OneDrive\MD\связь\) а с его веб путем вроде (https://d.docs.live.net/8a............\MD\связь\)

Естественно относительные ссылки перестают работать, и файл не обновляется, ошибки в запросах.

Пока приходится вырубать OneDrive, работать с файлом, сохранять, потом опять запускать OneDrive, что бы изменения синхронизировались.
Это не удобно, и я периодически забываю запустить OneDrive, и с другой машины не получаю актуальной версии.

Нагуглить эту проблему мне не удалось.

Может кто подскажет идею как победить?
Power Qwery. изменение названий столбцов, на основании данных в другой таблице., Как переименовать заголовки, используя отдельную таблицу справочник.
 
Цитата
Андрей VG написал:
не отвечать на поставленные вопросы?  
Прошу прощения если мои измышления оказались не понятны,
было представлено 2 варианта, я процитировал нужный и за него поблагодарил :)

В моем случае это первый вариант когда полей добавлять полей не нужно)
Power Qwery. изменение названий столбцов, на основании данных в другой таблице., Как переименовать заголовки, используя отдельную таблицу справочник.
 
Цитата
PooHkrd написал:
В общем если отсутствующих полей добавлять не нужно, то делаем так:
Спасибо! Я знал что есть человеческий способ, без танцев с бубном) то что надо!
Премного благодарен))
Power Qwery. изменение названий столбцов, на основании данных в другой таблице., Как переименовать заголовки, используя отдельную таблицу справочник.
 
Здравствуйте, Уважаемые!

Имеется таблица, с N количеством столбцов, каждый из которых имеет системное название в своем заголовке. так как это хранится в базе.
И есть вторая таблица, справочник, который содержит в себе соответствие системных полей, названиям, понятным пользователю.
что то типа
fioФИО
countryСтрана
postIndexИндекс
Обе таблицы затягиваются в  PowerQwery по API.

Но, этот справочник имеет меньшее количество названий для столбцов, чем столбцов в таблице из базы.
И это сломало используемый мной метод, когда справочник транспонировался, объединялся с таблицей базы и повышались заголовки.
Это имеет смысл только если соответствие столбцов один к одному. А в моем случае получилось, что столбцы вне справочника, изначально имеющие системное название становятся безымянными.

Нужен другой способ.
Подкиньте идею, пожалуйста!
PQ. Шаг ссылается на другие запросы или этапы и поэтому не может напрямую обращаться к источнику данных. Измените эту комбинацию данных. V2, Нужен метод для обхода Formula.Firewall без отключения уровней конфиденциальности.
 
Решил проблему. Собрал все функции и источники в один большой запрос. Сбросил и переназначил все политики конфиденциальности.
Тему можно закрывать.
PQ. Шаг ссылается на другие запросы или этапы и поэтому не может напрямую обращаться к источнику данных. Измените эту комбинацию данных. V2, Нужен метод для обхода Formula.Firewall без отключения уровней конфиденциальности.
 
Цитата
PooHkrd написал:
Попробуйте обратиться  сюда .
Спасибо за наводку ;)  
PQ. Шаг ссылается на другие запросы или этапы и поэтому не может напрямую обращаться к источнику данных. Измените эту комбинацию данных. V2, Нужен метод для обхода Formula.Firewall без отключения уровней конфиденциальности.
 
Здравствуйте!

Проблема: запрос дает ошибку -
Formula.Firewall: Запрос "xxxx" (шаг "xxxxx") ссылается на другие запросы или этапы и поэтому не может напрямую обращаться к источнику данных. Измените эту комбинацию данных.
На форуме уже есть тема с таким названием, и решением в ней было отключить уровни конфиденциальности.
Да, это работает, но только в Excel и PBi desktop. Если такой файл опубликовать, он перестанет обновляться из запросов.


Тема достаточно распространенная, уже 4й день штудирую заграничные форумы в поисках подходящего мне решения.
Основная проблема, в том что при использовании двух источников данных фаервол не умеет для каждого отдельно выставить конфиденциальность и просит переделать запрос так, чтоб в нем не использовалось более одного запроса.

Но как это сделать? В моем случае по первому запросу я получаю диапазон ID, а во втором по этим ID получаю данные.

Что я уже пробовал:
Делить основной запрос на более мелкие (шаги) и в последствии ссылаться уже на отдельный запрос - не помогает
Оборачивать шаги запроса в функции, чтоб вынести отдельно - не помогает.

Возможно где-то накосепорил с логикой.
Буду рад помощи! Очень хотелось бы найти решение, иначе какой смысл делать автоматически обновляемые отчеты, если они могут обновляться только на десктопе. :)
Может у кого то получится переделать запрос так чтоб не ругался фаервол.

Я подготовил файлик PBi, c примером с работающими ссылками на вымышленные данные. Структура такая же как у меня в боевом файле, только упрощена до нескольких десятков строк.
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Цитата
artyrH написал:
может, так хотите?
Годный вариант, спасибо!)
правда наблюдается аномалия :


думаю это в самом ЦБ так храниться
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Цитата
PooHkrd написал:
Удачи в адаптации!
Что то нифига не получается( надо идти учить мат часть.

зато придумал вполне прикладной пример:
Код
let

    дата = DateTime.LocalNow(),/// сегодня
    startdate= DateTime.ToText ((Date.AddDays(дата , 
    -1 // столько дней назад взять курс
    )), "dd/MM/yyyy"),
    Источник = Xml.Tables(Web.Contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req="&startdate), null, 1251),
    CBR = Table.ExpandTableColumn(Источник, "Valute", {"NumCode", "CharCode", "Nominal", "Name", "Value", "Attribute:ID"}, {"NumCode", "CharCode", "Nominal", "Name", "Value", "Attribute:ID"}),   
    MyTable = Excel.CurrentWorkbook(){[Name="База"]}[Content],
    #"Добавленный запрос" = Table.Combine({MyTable, CBR}),
    #"Удаленные дубликаты" = Table.Distinct(#"Добавленный запрос", {"CharCode", "Attribute:Date"})
in
    #"Удаленные дубликаты"

В экселе будет подтягивать таблицу курсов ЦБ за вчерашний день. Обновляясь каждый день можно иметь курс на любой день)


И возвращаясь к вопросу циклов - как задав диапазон дат (скажем с 01 по 31) заставить пробежаться по каждому дню и забрать данные для Table.Combine?
Изменено: Zabubu - 21.11.2019 02:56:05
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Цитата
artyrH написал:
а зачем вы версию в дату превратили?и зачем вообще вся эта затея?
В файле апи для примера взял первое что в интернете нашел, чтоб сделать пример файла.
Реальное апи другое, и доступ я к нему предоставить не могу.
Затея чтоб собрать актуальную базу, и в последствии сделать по ней аналитику, и всегда быстро иметь доступ к актуальным данным.

Цитата
PooHkrd написал:
а в чем проблема в цикле
Я примерно это и имел ввиду фразой "поочередные запросы". Проблема в том что сам не умею.
Мнеб хотяб примерчик кода как это делается, дальше уже под реальный запрос адаптирую.

только вот левый апи из примера не подойдет.

но если покажете как сделать циклические конструкции буду благодарен
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Цитата
Андрей VG написал:
Тогда, увы
А если пойти другим путем? Отказаться от идеи хранения, и сделать запрос с указанием диапазона дат, либо задать пул идентификаторов от до.
Как организовать по очередные запросы и последующую склейку, если сервис отдает данные за любой период, но кусками максимум за 5 дней а посмотреть хотим за месяц?


Если есть примеры, в которых можно разобраться и переделать под свои нужды будет просто супер.
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Это похоже на то что нужно, но, к сожалению, премиум контент мне недоступен.
У меня ученическая учетка бесплатная.
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Всем привет!

У меня есть сервис, с которого я раз в сутки забираю данные get запросом по api.
Есть необходимость хранить результаты за предыдущие дни, и таким образом собирать базу. Мне удалось решить это в Excel в power query.
2 запроса:
первый подтягивает свежие данные с API
второй склеивает себя с первым запросом и обратно возвращает себя в файл с "приростом"
и так каждый день.
пример в файле

Теперь я хочу сделать это в PowerBi, и поставить автообновление. Но не знаю как там сохранить результат.
И банально не могу понять как сослаться на другую загруженную таблицу.
Например если в екселе можно было сделать :

= Excel.CurrentWorkbook(){[Name="..."]}[Content],

то в PB такая конструкция уже не прокатывает.


Буду рад любой подсказке в какую сторону копать :)
Преобразование данных в ячейке в табличный вариант, Ищу вариант вариант превратить данные в ячейке через запятую, в таблицу, для последующего использования в сводных
 
на формулах тоже интересный вариант, но более привередливый.
например к пробелам, если название будет не "Яблоко" а "Яблоко наливное" то формула уже не правильно будет результат отображать
Преобразование данных в ячейке в табличный вариант, Ищу вариант вариант превратить данные в ячейке через запятую, в таблицу, для последующего использования в сводных
 
Цитата
PooHkrd написал:
Вариант на Power Query:
Идиальный вариант! Спасибо огромное! Даже не ожидал что решение найдется так быстро)
Вы профи своего дела
Преобразование данных в ячейке в табличный вариант, Ищу вариант вариант превратить данные в ячейке через запятую, в таблицу, для последующего использования в сводных
 
Добрый день!

Прошу вашей помощи.
Работая со множеством CRM систем, сталкиваюсь с проблемой хранения информации о товаре в заказе. А именно, в большинстве случаев, информация хранится в одном поле(строке), где товар представлен перечисленным через какой либо разделитель. И в выгрузках сотрудников представляется также в одной ячейке.
Например:
Груша - 2,Дыня - 1,апельсин - 1
Человеку такая запись понятна, но когда дело доходит до расчетов в таком виде машина на понимает.

По этому обращаюсь к вам за помощью, придумать вариант преобразования и исходного варианта
номер заказатовар
10001апельсин -   1,Яблоко - 2
10002Яблоко -   2,Груша - 4
10003Груша -   2,Дыня - 1,апельсин - 1
10004Яблоко -   2,Дыня - 2
в понятный для сводных таблиц екселя
номер заказатоварколичество
10001апельсин1
10001Яблоко2
10002Яблоко2
10002Груша4
10003Груша2
10003Дыня1
10003апельсин1
10004Яблоко2
10004Дыня2
Думаю я не единственный заинтересованный, и где то решение уже есть, но в поисках мне пока не повезло.
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Цитата
БМВ написал:
эээээ
Я ж говорю, для эксперимента. Я цифру большую от балды написал, могу выгрузить больше .
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Я в ближайшие дни повешу на реальные выгрузки, и для эксперимента попробую выгрузить не за один день а за месяц))  100 000 заказов покажут разницу между формулой и PQ
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Ребят, спасибо огромное!! Это то что нужно
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Цитата
БМВ написал:
Ну и я сформулировал :-)
Супер!!! Быстро без мороки, формулой. И если я правильно понял формулу, в начало можно добавить еще один IFERROR, на случай когда в системе появится новый товар, которого небыло в справочнике сокращений и начнет отдавать Н/Д. типа "Обновите справочник" :)  гулять так по полной :D
Цитата
Андрей VG написал:
то, что нужно
Очень интересно, первый раз такое решение в руки попалось. и сразу вопрос:
можно ли (точнее как) итоговое количество в отдельный столбец?

Если с вариантом уважаемого Михаила это просто сделать, разделив формулу
=ПРОСМОТР(2;1/([@[id заказа]]=тв[id заказа]);тв[Column2]) & " всего " & СУММЕСЛИ(тв[id заказа];[@[id заказа]];тв[количество])

на
=ПРОСМОТР(2;1/([@[id заказа]]=тв[id заказа]);тв[Column2])
и
=СУММЕСЛИ(тв[id заказа];[@[id заказа]];тв[количество])
по столбцам. То с вашим вариантом мне это сделать сложновато. Понимаю что вот это оно Text.From(List.Sum(result[count])) но синтаксисом не владею)

Предвидя будущие перспективы, сразу думаю как считать общее количество единиц не только по заказу, но и по итоговому реестру в целом.
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Цитата
БМВ написал:
всего две формулы
Класс!!

тут вот еще мысль какая родилась, на примере " яд в подарок":

По факту товар один и тот же что "яд" что "яд в подарок". Если сокращение будет одно и тоже для обоих названий, допустим "я", можно чтоб они считались вместе?
не "я6 я2" а сразу "я8" ?
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Спасибо! дальше буду развивать
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Цитата
БМВ написал:
Вот так подойдет?
тогда придется как то найти последнюю запись в отсортированных товарах, чтоб вернуть ее в первую таблиц заказов
760252478324оксиды2окок2
760252422670наждачка9нок2 н9
760252422684масло2мсок2   н9 мс2
760252423275яд2яок2 н9 мс2 я2
760252423276яд в подарок4япок2   н9 мс2 я2 яп4
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Цитата
БМВ написал:
Понятно что вы хотите получить, но не понятно из чего и куда это положить. Вот это
таблиза заказы. второй заказ - строка
666403523.04.2018   22:11адрес2имя2Почта РоссииRU
по ID во второй таблице имеем:
666403522665шарниры3шн
666403522674пружины1пр
нужно вот это как то переварить и вернуть
"Шарниры3 пружины1"

куда? для начала пусть обратно в заказы(в идеале в формируемый реестр)
666403523.04.2018   22:11адрес2имя2Почта РоссииRU"Шарниры3   пружины1"
главное получить этот String,  дальше уже дело техники его в нужном месте цикла формирования реестра разместить
Изменено: Zabubu - 21.09.2018 16:06:51
VBA. подскажите алгоритм: необходимо вернуть в основную таблицу закодированный результат из второй таблицы
 
Так может целиком в название все что есть в описании темы?
"VBA. подскажите алгоритм, необходимо вернуть в основную таблицу закодированный результат из второй таблицы"
Не знаю как коротко сформулировать не объясняя всю задачу
Изменено: Zabubu - 21.09.2018 00:28:06
Страницы: 1 2 След.
Loading...