Siguiendo un poco el tema del post anterior de como consumir datos desde una web (web scraping), hoy os quiero mostrar como podemos consumir datos de una API que esta securizada con JWT desde Power BI. Para ello usaremos scripts con Power Query M.

Power Query M

Power Query es una herramienta que nos va a permitir extraer datos, transformarlos y cargarlos en un origen. Para usar esta herramienta, se usa el lenguaje M.

Las consultas con lenguaje M de Power Query se componen de variables, expresiones valores encapsulados en una expresión let. Las variables pueden tener espacios mediante el identificador # y su nombre entre comillas.

Caso práctico

Para este caso, tengo una API creada en local que tiene una tabla de usuarios y roles para la autenticación y una tabla de coches asociados a usuarios:

He creado dos endpoints:

  • GetAllCars -> https://localhost:44315/api/Car/GetAllCars. Es un endpoint de tipo GET que devuelve un listado con todos los coches disponibles en la bbdd y que esta securizado. Para poder hacer la llamada, hay que enviar la cabecera Authorization -> Bearer Token.

Como en la API los tokens los tengo configurados con un expire de 60 minutos, no tiene sentido hacer la llamada a GetAllCars con un token fijo, porque cuando quiera refrescar en un futuro tendría que obtener de nuevo el token por separado.

Para solucionar esto vamos a crear un par de scripts con Power M, con los que podremos obtener el token de forma dinámica y luego aplicarlo a la llamada de obtención de registros.

Creamos un nuevo proyecto de Power BI en Power BI desktop y elegimos Get Data-> Blank Query, y accedemos al advanced editor.

Power M Scripts

Añadimos el siguiente script:

En el script podemos ver una primera parte en la que indicamos el body de la llamada pasando usuario y contraseña, y la url del endpoint. Posteriormente hacemos una serie de conversiones para poder sacar la propiedad token del json de respuesta.

Con esto ya tendríamos el token para poder hacer posteriores llamadas.

Volvemos a crear una query vacía para añadir el script de obtención de datos y lo rellenamos con este script:

En este script vemos la url del endpoint a GetAllCars y la cabecera de Authorization. Podemos ver que estamos extrayendo el primer valor de la query Authenticate para pasárselo como token a la query de obtención de datos.

Resultado

Vemos el resultado final:

Para probar todo y ver que funciona correctamente, he reiniciado la API, y veo que el token obtenido es diferente al anterior por lo que lo tenemos funcionando dinámicamente.

¡¡Espero que os haya sido útil!!

Procesando…
¡Lo lograste! Ya estás en la lista.
Última modificación: abril 24, 2020

Autor

Comentarios

Comenta o responde a los comentarios

Tu dirección de correo no será publicada.