Страницы: 1
RSS
Power Bi. Как организовать накопление данных с каждым обновлением запроса?, подскажите, есть ли способ хранить в powerbi результаты предыдущего результата запроса, для соединения с текущим.
 
Всем привет!

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

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

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

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


Буду рад любой подсказке в какую сторону копать :)
 
Доброе время суток.
Используйте Incremental refresh in Power BI
 
Это похоже на то что нужно, но, к сожалению, премиум контент мне недоступен.
У меня ученическая учетка бесплатная.
 
Цитата
Zabubu написал:
бесплатная.
Тогда, увы. Лучше делать инкремент в Excel. В Power BI Desktop можно заморочиться с отключением обновления очередного запроса Power Query, созданием нового с настройкой диапазона условия обновления, а потом объединение через UNION с общей таблицей. Но такие ручные приседания имеют смысл проделывать раз в неделю максимум, а не на ежедневной основе.
Ну, можно ещё покопать в таком направлении :)
 
Цитата
Андрей VG написал:
Тогда, увы
А если пойти другим путем? Отказаться от идеи хранения, и сделать запрос с указанием диапазона дат, либо задать пул идентификаторов от до.
Как организовать по очередные запросы и последующую склейку, если сервис отдает данные за любой период, но кусками максимум за 5 дней а посмотреть хотим за месяц?


Если есть примеры, в которых можно разобраться и переделать под свои нужды будет просто супер.
 
Цитата
Zabubu написал:
, если сервис отдает данные за любой период, но кусками максимум за 5 дней а посмотреть хотим за месяц?
А где документация по тому как получить это?
 
может, будет вариантом ежедневное или раз а пять дней обращение за данными и сохранение макросом текстовым файлом в папку. а в папку  уже обращаться из РВ
 
Zabubu,  а в чем проблема в цикле по просить ваш сервис 6 раз выдать куски по 5 дней и Table.Combine'ом собрать это дело в одну таблицу?
Вот горшок пустой, он предмет простой...
 
Zabubu, а зачем вы версию в дату превратили?
и зачем вообще вся эта затея?
 
Цитата
artyrH написал:
а зачем вы версию в дату превратили?и зачем вообще вся эта затея?
В файле апи для примера взял первое что в интернете нашел, чтоб сделать пример файла.
Реальное апи другое, и доступ я к нему предоставить не могу.
Затея чтоб собрать актуальную базу, и в последствии сделать по ней аналитику, и всегда быстро иметь доступ к актуальным данным.

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

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

но если покажете как сделать циклические конструкции буду благодарен
 
Цитата
Zabubu написал:
Мнеб хотяб примерчик кода как это делается,
Тут на форуме таких примерчиков вагон и маленька тележка. Ну, если уж совсем лениво, то вот:
Код
let
    Source = (x)=> Table.FromRecords( {Json.Document(Web.Contents("https://randomuser.me/api/"))[info]} ),
    Custom1 = List.Generate(
                () => [id = 0, runningTab = Source(id)],
                each [id] < 6,
                each [id = [id] + 1, runningTab = [runningTab] & Source(id)],
                each [runningTab]),
    Custom2 = List.Last( Custom1 )
in
    Custom2

Удачи в адаптации!
З.Ы. Можно даже проще:
Скрытый текст
Изменено: PooHkrd - 18.11.2019 09:24:32
Вот горшок пустой, он предмет простой...
 
Цитата
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
 
Цитата
Zabubu написал:
как задав диапазон дат
может, так хотите?
Код
let

    дата = {Number.From(Date.From(DateTime.LocalNow()))-10..Number.From(Date.From(DateTime.LocalNow()))},
    #"Converted to Table" = Table.FromList(дата, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "a", each Xml.Tables(Web.Contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req="&Text.From([Column1])), null, 1251)),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Added Custom", "a", {"Valute", "Attribute:Date", "Attribute:name"}, {"Valute", "Attribute:Date", "Attribute:name"}),CBR = Table.ExpandTableColumn(#"Expanded {0}", "Valute", {"NumCode", "CharCode", "Nominal", "Name", "Value", "Attribute:ID"}, {"NumCode", "CharCode", "Nominal", "Name", "Value", "Attribute:ID"})
in
    CBR
 
Цитата
artyrH написал:
может, так хотите?
Годный вариант, спасибо!)
правда наблюдается аномалия :


думаю это в самом ЦБ так храниться
 
Zabubu, может праздники или выходные
если не нужны одни и те же данные, то на каком то шаге можно удалить дубликаты
Страницы: 1
Наверх