Sean
Estoy consultando una API usando http y puedo cargar y modelar los datos en el editor de consultas sin problemas. Cuando hago clic en guardar y cerrar, comienza a cargarse en el modelo, pero luego recibo un error de contenido web 404.
Recibo datos cuando consulto a través de un navegador (Chrome), por lo que no hay problema con la URL en sí y los datos se cargan en el editor de consultas.
¿Dónde me estoy equivocando?
ImkeF
En respuesta a Sean
Sí, por eso lo propuse como solución 😉
v-shex-msft
Hola @seann,
¿Qué modo de autorización solicita su API? (oauth u otro) ¿Ha utilizado operaciones avanzadas? (combinar, agregar, combinar, actualizar consulta, funciones personalizadas) ¿Funcionó la operación de actualización en el lado del editor de consultas?
Comparta información más detallada para ayudarnos a aclarar su situación.
Por cierto, también puede consultar el siguiente enlace para saber cómo rastrear el mensaje de error detallado:
Manejo de errores 404: no encontrados con Web.Contents() en Power Query y Power BI
Saludos,
Xiaoxin-sheng
Sean
En respuesta a v-shex-msft
Gracias por tu respuesta @v-shex-msft
He rastreado el error hasta uno de codificación de URL. Al cargar los datos en el modelo, Power BI decodifica un «%2f» en la URL a «https://community.powerbi.com/», que debe estar codificado. Vea abajo.
https://[DOMAIN]/[PATH]%2fuser?[QUERY]
Intenté forzar la codificación de «https://community.powerbi.com/» en la consulta M, que funciona en el Editor de consultas usando «Uri.EscapeDataString(«https://community.powerbi.com/» ).
let Encoded = Uri.EscapeDataString("https://community.powerbi.com/"), Source = Json.Document(Web.Contents("https://[DOMAIN]/[PATH]" & Encoded & "user?[QUERY]", [Headers=[Authorization="[AUTHKEY]"]])) in Source
Esto se ignora al cargar datos en el modelo y recibo (redactado) el «https://community.powerbi.com/» descodificado, lo que está causando el error 404.
OLE DB or ODBC error: [DataSource.Error] Web.Contents failed to get contents from 'https://[DOMAIN]/[PATH]/user?[QUERY]' (404): Not Found.
Desafortunadamente, la API con la que estoy trabajando requiere que se codifique esta sección de la URL (he probado esto fuera de PBI). Puedo ver y modelar los datos sin obstáculos en el editor de consultas, pero la codificación durante la carga del modelo provoca un error 404. ¿Hay alguna solución para esto?
¡Gracias por tu ayuda!
v-shex-msft
En respuesta a Sean
Hola @seann,
Desafortunadamente, tampoco encontré soluciones efectivas para resolver este problema. Tal vez pueda echar un vistazo al siguiente blog sobre el manejo de caracteres especiales.
Manejo de caracteres especiales de archivos html con Power BI (lenguaje M).
@ImkeF ¿Alguna sugerencia con conector web y codificación de caracteres?
Saludos,
Xiaoxin-sheng
Sean
En respuesta a v-shex-msft
Gracias por las sugerencias @v-shex-msft, pero no tengo problemas con los caracteres especiales en el editor de consultas, solo cuando se carga en el modelo.
ImkeF
En respuesta a v-shex-msft
Lo siento, esto me parece un error: claramente tiene las cadenas correctas en su URL y se carga correctamente en el editor y cuando se transforma al modelo, realiza una conversión adicional. Debe presentar un informe de error para ello.
Teóricamente, se podría aplicar la evaluación de cadenas mediante el uso de «Expression.Evaluate», pero desafortunadamente esto tampoco funciona cuando se carga en el modelo (pero esto es por diseño).
Entonces, la única solución que se me ocurre en este momento es ejecutar la consulta en el editor y usar un script R o Python para exportar desde el editor a un archivo csv y volver a importar desde allí.
ImkeF
En respuesta a ImkeF
En realidad, otra idea:
Pruebe el método «Ruta relativa»: https://blog.crossjoin.co.uk/2016/08/16/using-the-relativepath-and-query-options-with-web-contents-i…
Con un poco de suerte, esto evita el problema:
let Encoded = Uri.EscapeDataString("https://community.powerbi.com/"), Source = Json.Document(Web.Contents("https://[DOMAIN]/[PATH]",
RelativePath="user?[QUERY]",
Query=[Headers=[Authorization="[AUTHKEY]"]])) in Source
Sean
En respuesta a ImkeF
Gracias por la solución @ImkeF. Desafortunadamente, la función «RelativePath» parece ser un marcador de posición para «https://community.powerbi.com/», en lugar del «% 2f» codificado, por lo que me encuentro con el mismo error 404. Presentaré un informe de error.
¿Puede un script de R/Python acceder a los datos en el editor de consultas sin que se cargue en el modelo?
ImkeF
En respuesta a Sean
Sí, por eso lo propuse como solución 😉
Sean
En respuesta a ImkeF
Dejando el código R aquí para cualquier persona que se enfrente a los mismos dramas y tenga habilidades limitadas de R como yo: crédito para @ImkeF y http://www.instantr.com/2012/12/11/exporting-a-dataset-from-r /
#"PREVIOUS STEP" = Whatever the last step was in M
#"Run R script" = R.Execute("write.csv(dataset, ""C:/Folder/File.csv"", row.names=F)",[dataset=#"PREVIOUS STEP"])
in
#"Run R script"