Hey guys,
I've been trying to integrate my Azure ML web service with Power BI using an R script, but with no success.
I have already read Justyna's post and watched the Webinar on this topic, but I am pretty sure there is something missing on their codes.
My R Script is as follows:
# 'dataset' contém os dados de entrada neste script library("RCurl") library("rjson") createList <- function(dataset) { temp <- apply(dataset, 1, function(x) as.vector(paste(x, sep = ""))) colnames(temp) <- NULL temp <- apply(temp, 2, function(x) as.list(x)) return(temp) } # Accept SSL certificates issued by public Certificate Authorities options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) h = basicTextGatherer() hdr = basicHeaderGatherer() req = list( Inputs = list( "input1" = list( "ColumnNames" = list("ID", "Churn", "Estado", "LigacoesSuporte", "VoiceMail", "MensagensVoiceMail", "PlanoInternacional", "TotalLigacoesDia", "TotalCustoDia", "TotalLigacoesNoite", "TotalCustoNoite", "TotalLigacoesIntern", "TotalCustoIntern"), "Values" = createList(dataset) ) ), GlobalParameters = setNames(fromJSON('{}'), character(0)) ) body = enc2utf8(toJSON(req)) api_key = "XXXXXXX" # Replace this with the API key for the web service authz_hdr = paste('Bearer', api_key, sep=' ') h$reset() curlPerform(url = "https://ussouthcentral.services.azureml.net/workspaces/XXXXX/services/XXXXXX/execute?api-version=2.0&details=true", httpheader=c('Content-Type' = "application/json", 'Authorization' = authz_hdr), postfields=body, writefunction = h$update, headerfunction = hdr$update, verbose = TRUE ) headers = hdr$value() httpStatus = headers["status"] if (httpStatus >= 400) { print(paste("The request failed with status code:", httpStatus, sep=" ")) # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure print(headers) } result = h$value() finalResult <- fromJSON(result)
#Return results inter <- do.call("rbind", as.list(finalResult$Results$output1$value$Values)) MyFinalResults <- data.frame(inter) names(MyFinalResults) <- finalResult$Results$output1$value$ColumnNames rm(list=setdiff(ls(), "MyFinalResults"))
I tried changing a lot of things in the code, but I always get an empty Table for MyFinalResults.
Has anyone ever did this with R Script?
I bet there is something wrong with
inter <- do.call("rbind", as.list(finalResult$Results$output1$value$Values))
I tried first without the funciont as.list() as they said, but it gives an error because the second argument must be a list.
And when I test this on RStudio, it returns a Null value.
Anyway, would be glad if anyone help me.
Thanks