Error 404 al cargar datos al modelo

Un usuario Pregunto ✅

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 😉

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!

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"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *