DBirdman AR
Hola a todos,
Estoy tratando de conectar PowerBI a REDCap (consulte https://projectredcap.org/), que es una aplicación PHP/MySQL que tiene una API que usa HTTP POST para permitir que los usuarios extraigan datos con un token válido.
He tenido muchos problemas para formatear la llamada de PowerBI. Sé que tengo los permisos adecuados porque puedo usar R para consultar mi API. Esta es una llamada R válida a la API
library(RCurl)
result <- postForm(
uri='MY APIs URL',
token='MY VALID TOKEN',
content="project",
format="json",
returnFormat="json"
)
print(result)
y obtengo una buena respuesta. Sin embargo, no puedo entender cómo traducir esto a PowerBI.
Lo que es interesante es que cuando ejecuto este código aparece un error que dice que aparece el error «Expresión.Error: el acceso al recurso está prohibido».
let
url = "MY APIs URL",
body = "{
""token"":""MY VALID TOKEN HERE"",
""content"":""project"",
""format"":""json"",
""returnFormat"";""json""
}",
Source = Json.Document(Web.Contents(
url,
[Headers = [#"Content-Type"="application/json"],
Content=Text.ToBinary(body)]))
in
Source
Cuando hago clic en «Editar configuración», aparece esta ventana emergente que acepto como «OK», pero sigo recibiendo el error «Web.Contents no pudo obtener el contenido de ‘Mi URL de API’ (501): no implementado». Sé que tengo permisos porque puedo hacer que R ejecute el código y obtengo una respuesta. Creo que no estoy formateando correctamente el código M, pero no estoy seguro de cómo hacerlo.
cwileyrrt
¿Alguien puede describir los pasos que se tomaron para que esto funcione?
Actualmente uso el conector GitHub que permite la actualización local pero no permite la actualización automática en línea. No estoy seguro de qué conector estaban usando para el código que aparece a continuación.
DBirdman AR
Hola a todos, encontré una API REDCap pública (vea https://cran.r-project.org/web/packages/REDCapR/vignettes/TroubleshootingApiCalls.html que a mitad de camino dice
Si le ayuda comenzar con un servidor REDCap diferente, puede usar este proyecto ficticio que contiene datos falsos alojados por el OUHSC BBMC. la url es https://bbmc.ouhsc.edu/redcap/api/. Hay tres pares clave-valor: (1) el ‘token’ es 9A81268476645C4E5F03428B8AC3AA7B, (2) el ‘contenido’ es registro, y (3) el ‘formato’ debe ser CSV. Al verificar su propio servidor, el valor del token debería cambiar, pero el contenido y el formato no. Debería devolver cinco registros en formato CSV. El ‘estado’ debe ser 200 bien.
Instalé Postman en Chrome y probé la API ficticia en bbmc y tanto ella como mi API funcionan dentro de Postman. Es claramente un error que estoy teniendo al intentar configurar PowerBI.
Traté de configurar una conexión muy simple como esta, pero sigo recibiendo un error Detalles: «Web.Contents no pudo obtener contenidos de ‘https://bbmc.ouhsc.edu/redcap/api/’ (501): No implementado «
DBirdman AR
En respuesta a DBirdmanAR
Eran dos temas:
- Necesito cambiar a x-www-form-urlencoded
- Hubo graves errores de formato tanto en los encabezados como en el contenido.
let
actualUrl = "https://bbmc.ouhsc.edu/redcap/api/",
record =[token="9A81268476645C4E5F03428B8AC3AA7B",
content="record",
format="csv"
],
body = Text.ToBinary(Uri.BuildQueryString(record)),
options = [Headers =[#"Content-type"="application/x-www-form-urlencoded"], Content=body],
result = Web.Contents(actualUrl, options)
in
result
v-tapa-msft
En respuesta a DBirdman AR
Hola @DBirdmanAR,
¿Qué tal el resultado después de seguir las sugerencias mencionadas en mi publicación original? ¿Podría proporcionar más detalles al respecto si no cumple con sus requisitos?
Atentamente,
v-tapa-msft
En respuesta a DBirdmanAR
Hola @DBirdmanAR,
Su consulta funciona bien por mi parte, intentamos convertir el resultado con formato csv y obtener los datos ficticios como documento. Si tiene alguna otra pregunta, por favor pregunte aquí e intentaremos resolverla.
Atentamente,
274188A
En respuesta a v-tapa-msft
Perfecto para mis necesidades, un año después, ¡pero GRACIAS! Salvavidas.
¿Hay un límite en la cantidad de campos a los que puedo conectarme? tengo 250!
Salud,
John