R как отключить JSON исходящих / входящих сообщений заголовка? - PullRequest
0 голосов
/ 07 августа 2020

У меня проблема с использованием сценария R в качестве источника данных в Microsoft PowerBi. Я думаю, что это финансовая проблема PowerBi, но в краткосрочной перспективе мне нужно будет найти решение в R.

По сути, PowerBi не может обрабатывать сообщения, которые будут отправлены. на консоль, если я использовал R Studio.

В сценарии R я использую REST API для запроса данных с URL-адреса. Полученное сообщение JSON преобразуется в кадр данных R. При использовании сценария в качестве источника данных в PowerBi это работает только в том случае, если я установил подробные настройки в значение FALSE, т.е. если я использовал R Studio, на консоль не отправляются сообщения (в частности, данные в).

response <- GET(<url>,
                body = list(),
                add_headers(.headers = c('<identity token>' = ID_to_use)),
                verbose(data_out = FALSE,
                        data_in = FALSE,
                        info = FALSE,
                        ssl = FALSE),
                encode = "json")

Однако у меня нет возможности отключить входящие / исходящие сообщения заголовка JSON (которые вернутся, чтобы укусить!).

<<  {"identity":" <token>"}
*  Connection #54 to <host> left intact
No encoding supplied: defaulting to UTF-8.
-> GET <URL request> HTTP/1.1
-> Host: <host>
-> User-Agent: libcurl/7.64.1 r-curl/4.3 httr/1.4.1
-> Accept-Encoding: deflate, gzip
-> Accept: application/json, text/xml, application/xml, */*
-> <Identity>: <Identity>
-> 
<- HTTP/1.1 200 OK
<- X-Session-Expiry: 3599
<- Content-Type: application/json
<- Transfer-Encoding: chunked
<- Date: Thu, 06 Aug 2020 16:14:26 GMT
<- Server: <Server>
<- 
No encoding supplied: defaulting to UTF-8.
No encoding supplied: defaulting to UTF-8.
No encoding supplied: defaulting to UTF-8.

Из справки R

.
.    
verbose() uses the following prefixes to distinguish between different components of the http messages:
    * informative curl messages
    -> headers sent (out)
    >> data sent (out)
    *> ssl data sent (out)
    <- headers received (in)
    << data received (in)
    <* ssl data received (in)
.
.

Переключение подробных настроек на FALSE работает для одного запроса, однако мне нужно поместить запрос в al oop и продолжать запрашивать дополнительные данные, пока шлюз API не укажет, что больше данных для получения нет. PowerBi, похоже, не работает, когда в сценарии отправлено / получено пять или более запросов / ответов.

Просто из наблюдения, я предполагаю, что это связано с накоплением сообщений JSON Header.

Я пробовал несколько подходов, но, похоже, ничего не работает: раковина ('NUL'), invisible (), capture.output ().

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 августа 2020

Я нашел хакерское решение, которое, по крайней мере, решило проблему, которая у меня была в R, но не в PowerBi.

Написав сценарий R-оболочки (см. Ниже), который вызывает мой основной сценарий THE_SCRIPT. R с помощью команды оболочки. THE_SCRIPT выгружает файл CSV, который я затем читал в сценарии оболочки:

#Required by PowerBi
library(mice)

#set the directory, between R and the shell it's a pain to deal with spaces in the directories and quotes
setwd("C:/Program Files/R/R-3.6.2/bin/")
system("Rscript.exe C:\\Users\\<USER>\\Documents\\THE_SCRIPT.R > Nul 2>&1")

A_DATA_TABLE <- read.csv("C:\\Users\\<USER>\\Documents\\THE_FILE.csv")

Однако это все еще не решило проблему при запуске его в PowerBi.

Примечание. попробовал раковину ('Nul 2> & 1') в R, не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...