Visualizar datos almacenados en un clúster de Redshift privado con Power BI y Direct Query

powerBI-redshift

En el mundo de la visualización de datos en la nube cada vez es más común utilizar herramientas de diferentes proveedores de nube pública.

Uno de los casos más demandados por nuestros clientes es utilizar el Data Warehouse de AWS, Amazon Redshift, junto con la herramienta de Business Intelligence de Microsoft, Power BI.

Hasta hace pocos meses, esta integración sólo era posible mediante el modo “Import”, de tal manera que trabajar con grandes cantidades de datos era inviable.

En este artículo hablaremos sobre la posibilidad de utilizar Power BI para realizar informes y visualizar datos almacenados en un clúster de Redshift que no se encuentra públicamente accesible mediante Direct Query.

A continuación se muestra un diagrama de arquitectura simplificado para lograr el objetivo propuesto:

En la subred privada contamos con dos componentes fundamentales:

Clúster de Amazon Redshift (públicamente no accesible). Este clúster contendrá los datos que visualizamos en Power BI. Es importante recalcar que se encuentra desplegado en una subred privada y está configurado como “públicamente no accesible”, por lo tanto, es inaccesible desde Internet.

Instancia EC2 con Power BI Data Gateway instalado. Se ha levantado Windows Server 2016 en esta instancia y se ha instalado el software que provee Microsoft para conectar Power BI con entornos on-premise o software de terceros: Power BI Data Gateway. Esta instancia debe tener conectividad con Amazon Redshift.

 

Configuración On-premises data gateway

 

En la subred pública contamos con:

Una instancia EC2 con Power BI Desktop instalado. Se ha levantado Windows Server 2016 en esta instancia. Aquí es donde se diseñarán los informes, añadiendo como Origen de datos nuestro cluster de Redshift. Una vez tengamos estos informes, lo publicaremos en el workspace correspondiente del servicio de Power BI.

Nota: Este paso es opcional pero se recomienda su uso para elaborar los informes, pues dispone de más funcionalidades y una interfaz más intuitiva que el propio servicio de Power BI. Para esta prueba de concepto, elaboramos primero los informes en Power BI Desktop para después publicarlos en Power BI Service.

En el servicio de Power BI debemos realizar la configuración de Power BI Data Gateway:

 

 

Y añadir como administradores los usuarios que pueden usar el Data Gateway. Es importante realizar este paso; si nuestro usuario no tiene estos privilegios, fallará la conectividad con Redshift.

 

 

Una vez hemos publicado nuestro informe, debemos verificar que nuestro conjunto de datos está utilizando el data gateway que hemos configurado anteriormente:

 

 

Y ya podremos trabajar con nuestro conjunto de datos desde el servicio de Power BI, que está conectado mediante Direct Query contra Redshift privado:

 

Comunicación Data GW con Power BI Service

Una de las preguntas más comunes es cómo se realiza esta conectividad.

Se utiliza Azure Service Bus para establecer una configuración segura y cifrada entre el servicio de movimiento de datos del servicio Power BI y el Data Gateway. De manera simplificada, Data Gateway “escucha” en un canal de Azure Service Bus para las peticiones del tipo: configuración de fuentes de datos, credenciales y peticiones de refresco. En la siguiente imagen se explica detalladamente el proceso, aplicable a nuestro caso de uso.

 

Alta disponibilidad y balanceo de carga

Otra de las consultas más comunes, y más importantes, es la alta disponibilidad.

Cuando instalamos un nuevo Data Gateway, se puede escoger la opción de unirlo a un clúster de Data Gateway. La segunda instalación se configurará (todas las fuentes de datos/contraseñas, etc) del mismo modo que la primera. El resultado es un clúster de múltiples Data Gateways que se comporta como una única unidad.

Power BI balancea la carga automáticamente entre todos los gateways del clúster que están disponibles.

Conclusión

Como hemos visto, es muy sencillo realizar la conectividad entre estos dos componentes mediante Direct Query, ya que permite crear visualizaciones en conjuntos de datos muy grandes, en los que de otro modo sería imposible importar primero todos los datos con agregación previa.

 

Cloud Engineer en Keepler. "En los últimos años he desarrollado mi actividad en la nube pública (principalmente AWS y Azure) y en la automatización de procesos y servicios. Siempre intentado trabajar bajo un mindset de Agile y DevOps."

Port Relacionados

¿Qué opinas?

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.