¿Cómo representar datos en Power BI desde APIs REST?
Introducción
Microsoft Power BI es una herramienta de visualización y análisis de datos que permite crear visualizaciones de forma visual, permite utilizar fuentes de datos como CSV, bases de datos e incluso APIs Rest.
A continuación explicaremos:
Cómo usar un API REST como fuente de datos para importar datos JSON en Power BI.
Cómo transformar los datos JSON en un formato tabular.
Cómo hacer una visualización utilizando los datos importados.
Paso 1: Instalar Power BI
Lo primero será instalar Power BI. En el ejemplo usaremos Power BI Desktop que es gratuito y nos permite crear visualizaciones en un entorno desktop (sin publicación a web).
Puedes descargarlo desde Microsoft Store o desde esta url: https://powerbi.microsoft.com/es-es/desktop/.
Paso 2: Identificar el API REST de la que traeré los datos
En el ejemplo usaremos un API pública del Entorno CloudLab de Onesait Platform.
Si no tenemos cuenta, podemos crear un usuario desde https://lab.onesaitplatform.com/ en la opción SIGN UP:
Una vez logados, podemos acceder a nuestro entorno en el que, si no hemos creado aún ningún elemento de plataforma, veremos una pantalla inicial como esta:
Lo que nos interesa es buscar un API REST con información que podamos pintar en PowerBI. Para eso, accedemos a la opción DEVELOPMENT>My REST APIs:
Ahí seleccionaremos alguna de las APIs a las que tengamos acceso. Por ejemplo podemos buscar el API con información sobre los Restaurantes en New York:
Lo primero que haremos será invocar el API para comprobar qué datos devuelve y su estructura. Para eso, primero vamos a la opción User Tokens y copiamos nuestro Token.
Y luego vamos a la opción Swagger del API seleccionada:
Vemos que el API sólo tiene un método GET que me devuelve todos los restaurantes:
Vamos al método y seleccionamos Try it out. Copiamos nuestro Token y pulsamos Execute:
Al ejecutarlo, podremos ver la estructura de cada Restaurante en el array recibido:
Que es esta:
Paso 3: Importar datos desde el API REST
Ahora abriremos Power BI, e iremos a la opción Obtener Datos> Web
En la parte de URL copiaremos la URL de nuestro API REST (https://lab.onesaitplatform.com/api-manager/server/api/v1/Restaurants%20API) indicando Uso avanzado:
Como cabecera HTTP pondremos
accept: application/json
X-OP-APIKey: <mytoken>
Quedando al final:
Seleccionaremos Aceptar y Conectar en la siguiente pantalla.
Tras esto Power BI abrirá el Query Editor presentándonos el JSON importado desde la llamada al API REST en un formato tabular, como podemos ver en la imagen:
Si vamos navegando por el slide podemos ver todos los campos de cada elemento JSON:
Y si pinchamos sobre un elemento, nos dará la info completa:
Podemos ver que el atributo Restaurant.grades es una List. Si pinchamos sobre ella en la tabla accedemos a los elementos:
Y si pinchamos sobre el elemento Record el detalle:
Para volver a la tabla original en la ventana de PASOS APLICADOS, eliminamos los últimos pasos:
Paso 4: Convertir datos importados en una Pivot Table
Para crear una visualización, es mejor convertir los datos importados en una Tabla.
Para eso vamos a PASOS APLICADOS y nos situamos en el primer elemento Origen:
Nos aparecerá la opción Convertir a Tabla, que seleccionaremos:
Seleccionaremos Aceptar:
Ahora queremos que nuestra tabla tenga varias columnas, para los campos del JSO. Para eso usaremos el botón que aparece a la derecha:
Seleccionaremos todas:
Y luego volveremos a hacer lo mismo sobre el atributo complejo Restaurant:
Haremos lo mismo para Column1.Restaurante.address y Column1.Restaurants.grades:
Ahora ya estamos viendo todos los atributos que nos interesan… Así que podemos pulsar en Cerrar Y Aplicar:
Tras esto tendremos cargada la Tabla en nuestro modelo y podemos ver nuestras columnas:
Paso 5: Crear una visualización en la Vista Visualización
Una vez hemos transformado los datos en una tabla con el Editor de Consultas de Power BI podemos crear una visualización.
Vamos a crear diferentes tipos de visualización:
Empecemos por el gráfico de columnas agrupadas,
Al seleccionarlo, se incluirá una visualización en nuestra paleta y podremos configurar los campos a visualizar arrastrándolos a los diferentes componentes. Por ejemplo en Legend podemos arrastrar Column1.Restaurant.cuisine y en Legend al arrastrar el campo _id aparecerá como Recuento:
Ahora seleccionaremos otro componente como un gráfico circular, en este caso con las valoraciones: