En Power BI disponemos de tres métodos para que el servicio se conecte a los datos: Importación, DirectQuery y conexión en directo. Son tres mecanismos distintos, pensados para diferentes escenarios y diferentes tipos de fuentes de datos y que es importante tener en cuenta antes de desplegar cualquier proyecto de Power BI. No siempre podemos escoger el tipo de conexión, cuando queremos información de archivos, solo podemos importar su información, cuando hablamos de bases de datos es cuando tenemos que tomar una decisión.
Importación
La más habitual, con la que todo el mundo aprende a realizar sus primeros pasos con Power BI es la importación, escogemos uno o varios orígenes de datos e incorporamos la información que contengan, en la base de datos de Power BI. Luego, al publicar el informe (y con él, el conjunto de datos) también publicamos la estructura de datos y toda la información.
Dependiendo del origen de datos, podemos programar una actualización de datos desde Power BI Service. Si la información está en una base de datos en nuestros servidores será necesario instalar una puerta de enlace y configurarla para que el servicio en la nube pueda acceder a nuestros datos para realizar la actualización.
Si disponemos de un modelo de datos relativamente poco complejo, si el volumen de datos es aceptable y si requerimos de varios orígenes de datos, puede que esta sea la mejor opción, aunque no siempre es fácil ni simple tomar esta decisión.
La gran ventaja de este método es que nos permite disponer de toda la funcionalidad de Power BI, tanto en la manipulación de los datos al importarlos como en la realización de cálculos con DAX. La principal desventaja suele venir por el tamaño, puesto que existe una limitación de 1Gb por conjunto de datos en las licencias Pro por conjunto de datos, aunque se trata de una cifra que mide el modelo de datos una vez comprimido mediante el propio sistema de compresión de Power BI Service (denominado xVelocity).
DirectQuery
Como la palabra indica, se trata de una conexión directa a la base de datos. Los datos no se importan a Power BI, siempre estarán en el origen de datos. Los informes de Power BI envían consultas directamente al origen de datos al realizar cualquier petición (rederizado del informe, al aplicar un filtro, etc.).
DirectQuery puede utilizarse en varios tipos de bases de datos aunque no admite todos los orígenes de datos y tiene una serie de limitaciones. Para alguno de los orígenes de datos es necesario también instalar una puerta de enlace. Un aspecto importante a tener en cuenta y evidente es que el rendimiento estará relacionado directamente con la rapidez de la conexión existente entre el origen de datos y el servicio de Power BI.
Existen condicionante añadidos a su rendimiento, como el uso intensivo de RLS (seguridad a nivel de fila) puesto que si disponemos de muchos usuarios a los que se le aplica RLS significa que Power BI debe construir una consulta distinta para cada uno de ellos dejando inoperativa la caché del sistema y su método de generar consultas eficientes.
Pueden existir situaciones en las que no filtremos un informe lo suficiente y el sistema produzca un error al intentar realizar consultas que devuelven a un visual más de 1 millón de filas. Aún con estas limitaciones es un sistema bastante escalable. La parte más negativa es que no todas las funcionalidades de Power BI pueden utilizarse con este sistema. Existe una limitación para crear algunos tipos de medidas con DAX, no es posible mezclar datos de fuentes de datos distintas y alguna otra función queda deshabilitada.
Conexión en directo
La conexión en directo es un método similar a DirectQuery, aunque está destinado a orígenes de datos distintos y con más limitaciones puesto que buena parte de la funcionalidad la delega al origen de datos. Este método está destinado a Analysis Services (tanto multidimensional como tabular) y al origen de «Servicio de Power BI».
En este caso, todo el proceso de modelado de datos se realiza en el origen y Power BI simplemente recoge los metadatos del modelo. Las medidas calculadas debe estar también en el origen (utilizando DAX en modelos tabulares o MDX en OLAP), la capa de seguridad a nivel de fila también está delegada mediante el uso de los propios roles de Analysis Services.
La gran ventaja de este método es la escalabilidad, sin tener las limitaciones de espacio de la versión de importación, por el otro lado, Power BI se convierte en un motor de visualización de información, descartando el resto de funcionalidades.
Aquí tenéis de un vídeo de Ruth Pozuelo que compara las diferencias entre DirectQuery y la conexión en directo
Resumen
No siempre es una decisión fácil por la variedad de las variables que pueden hacer que nos decantemos ante un método u otro, tampoco tiene por qué ser de única elección. Es posible que dispongamos de un modelo multidimensional grande, que deba utilizarse en conexión directa en unos informes, pero que sea conveniente por razones de velocidad y granularidad de la información mostrada, importar solo una parte en otros informes.
En una organización grande, probablemente existirá una base de datos centralizada con los datos importantes y persistentes en el tiempo pero también multitud de orígenes de datos puntuales en forma de otras bases de datos, archivos de Excel, etc.