[Fabric] Nuevo tipo de conexión - Direct Lake

Entre el revuelo de tener una única plataforma unificada para los proyectos de datos, hay uno que me parece fantástico. Ya hemos conversado sobre Onelake, lakehouse como hacer ingesta de datos e incluso de notebooks, pero algo muy interesante que trae un paradigma nuevo es la nueva forma de conectarse en Power Bi.

En este artículo vamos a conocer más sobre la conexión. Veremos porque tanto revuelo y que tiene que las otras formas no tengan o porque la elegiríamos. Incluso explicar como setearla.

Como muchos otros posts, comencemos con la teoría de la fuente para analizar el concepto.

Definición Microsoft: El modo Direct Lake es una innovadora funcionalidad de conjunto de datos para analizar volúmenes de datos muy grandes en Power BI. Direct Lake se basa en la carga de archivos con formato parquet directamente desde un lago de datos sin tener que consultar un punto de conexión de Lakehouse y sin tener que importar o duplicar datos en un conjunto de datos de Power BI. Direct Lake es una ruta rápida para cargar los datos del lago directamente en el motor de Power BI, listos para su análisis.

Para mi esta bastante bien bajada a tierra. Enfoca que la nueva forma de conexión consiste en ser un vínculo directo que consulta Tablas de Lakehouse al momento de interactuar. Similar a Direct Query pero apuntando al recurso de almacenamiento de Fabric.

Ahora bien, ¿por que haría una conexión así? sobre todo considerando que la mayoría del mercado trabaja importando datos para dar prioridad a la performance. Repasemos en breves palabras las otras formas de conexión para entender sus beneficios. Si quieren entrar en más detalle puede revisar este post anterior

  • Direct Query: aún con su gran atractivo de tener los datos near realtime, no es muy elegido porque para mantener una buena performance necesita de un detallado modelado basado en buenas prácticas y transformaciones en el origen. La doc de microsoft tiene un muy buen artículo sobre esto.
  • Import Data: la forma más elegida por su velocidad. El problema de este modo de conexión pasa por dos detalles. Por un lado, los datos son asíncronos, es decir que necesitamos calendarizar N actualizaciones por día para tener información al día. Por otro lado, estamos replicando datos al importarlos, lo cual hace inseguro al archivo binario (pbix) en un versionado en repositorio porque los datos podrían quedar expuestos.
  • Direct Lake: se jacta de tener el near real time de direct query apuntando a lakehouse con la performance de import data.

¿Cómo es posible que Direct Query pueda cumplir con lo que promete?

Cuando lo ví por primera vez admito que me costaba pensar que sería posible, pero todo cambió cuando vi al program manager en uno de los videos lanzamientos explicandolo de una forma similar al párrafo siguiente.

¿Cómo es que power bi funciona rápido si lo importamos? El motor que corre en memoria de power bi se llama vertipaq y habla idioma DAX. Dicho motor se encagar de almacenar los datos con una estructura columnar luego de recibirlos. Power Bi entiende al motor de almacenamiento y habla nativamente el idioma DAX. Ahora, nosotros le enseñamos a Power Bi un segundo idioma nativo que es Spark. De esa forma podrá hablar con el motor de almacenamiento columnas que son las tablas Delta Parquet almacenadas en el Spark Catalog de un Lakehouse. La ideología es la misma y no tendríamos la necesidad de replicar los datos. Mantendríamos un archivo de Power Bi con meta datos de nuestro modelo que consulta al lakehouse en percepción de tiempo real.

Beneficios

  • Consulta directa: No dependemos de actualizaciones programadas sino que la información estaría disponible tras actualizar las tablas Delta en nuestro Spark Catalog.
  • Performance nivel import data: por la razón antes mencionada, podríamos tener una buena performance de experiencia de usuario.
  • XMLA Endpoint: los modelos direct lake ya cuentan con las capacidades necesarias para tener compatibilidad de escritura y lectura de este punto.
  • Almacenamiento: no replica datos. Lo cual no solamente es bueno para los silos, sino también para nuestra capacidad. Antes, cuando teníamos una licencia por capacidad estabamos pensando en el tamaño que tiene un modelo para ver cuanto podría soportar nuestra ram. Ahora, las consultan levantarán columnas que van siendo usadas de manera granular a medida que son requeridas.

Seguramente habrá más beneficios a medida que más actualizaciones lleguen, pero nosotros destacaremos esos cuatro.

¿Cómo creo un dataset con direct lake?

Al momento de crear una lakehouse el motor de Fabric crea automáticamente un dataset (default) que estará conectado a "todas" las tablas de nuestro catálogo de Tablas del lakehouse. En mi opinión esa no es la forma más cómoda o útil de trabajar porque no se puede editar. Para crear un conjuntos de datos direct lake, abrímos nuestro lakehouse y buscamos el botón "Nuevo conjunto de datos". Luego de seleccionarlo podremos elegir las tablas que queremos involucrar:

Una vez creado, recomiendo prender la característica de la organización que permite editar modelos de datos online o conectarse por XMLA para poder delimitar relaciones o medidas principales:

Ahora que ya lo modificamos para que estén sus relaciones activas y sus medidas necesarias, está listo para constuir informes con él.

Les recuerdo también, que luego del lanzamiento de Fabric está permitido hacer Direct Lake de una Fabric Warehouse.

DATO: El comportamiento de conexión directa esta activado por defecto para esta forma de creación de datasets, pero puede ser quitado en su configuración.

Consideraciones

  • Direct Lake solo se admite en SKU Power BI Premium P y Microsoft Fabric F. No se admite en SKU Power BI Pro, Premium por usuario o Power BI Embedded A/EM
  • Las tablas de Direct Lake no se pueden mezclar actualmente con otros tipos de tabla, como Import, DirectQuery o Dual, en el mismo conjunto de datos. Todavía no se admiten modelos compuestos.
  • Los conjuntos de datos Direct Lake creados o modificados mediante herramientas basadas en XMLA no se pueden abrir en la característica de modelado web.
  • Las relaciones DateTime no se admiten en conjuntos de datos de Direct Lake.

Finalmente, recomiendo tener a mano la documentación para conocer los detalles cambiantes a medida que haya actualizaciones o nuevos releases: https://learn.microsoft.com/es-es/power-bi/enterprise/directlake-overview