[PowerBiDesktop] Trabajar con millones de filas y poca RAM haciendo una muestra

Recientemente he participado de proyectos donde los usuarios que desarrollarían Power Bi Desktop contaba con Laptops con muy poca memoria. Estamos hablando de 4GB de ram aproximadamente. Si bien podemos pensar que la herramienta de 32 bits sería suficiente, no siempre será el caso.

En este ejemplo particular el conjunto de datos tenía más de 30 millones de filas con lo que no podían cargar los datos para trabajar sobre el modelo semántico y DAX. 

Por ello voy a mostrar el siguiente método para trabajar con una muestra del conjunto de datos de manera local que luego tenga actualizaciones sobre la totalidad de datos en el Servicio de power Bi.

Parámetros

Un parámetro sirve como una forma de almacenar y administrar fácilmente un valor que se puede volver a usar. Los parámetros proporcionan la flexibilidad para cambiar dinámicamente la salida de las consultas en función de su valor proporcionándonos una entrada cambiante en la consulta generada con Power Query. Si queres saber más sobre la creación y uso en Power Bi service de parámetros podes revisar este post: https://blog.ladataweb.com.ar/parametros-desde-service/

Nuestra solución consiste en crear un parámetro que nos ayude a limitar la cantidad de filas sobre las tablas de hecho o en caso que lo prefieran en todas las tablas. El caso más simple sería a través de una fecha dado que la mayoría de las tablas de hecho suelen tener una. 

Veamos un ejemplo. Este conjunto de datos tiene datos entre los años 2005 hasta 2021. Entonces podemos generar un parámetro así:

image

Con nuestro parámetro creado, el último paso sería filtrar la tabla de hecho. Dependiendo en nuestro origen, podríamos utilizar el filtro dentro de una consulta nativa o posterior a la primer captura de origen. En mi caso voy a filtrar para fechas posteriores (is after). Seleccionaré el parámetro y ok

image

Finalmente podrémos "Cerrar y Aplicar". De este modo el modelo solo tomará el año vigente. El filtro forzará a que la tabla de hechos sea una muestra de datos. Simplemente 2021. En caso de querer filtrar dimensiones también podemos hacerlo con números enteros de los "ID/Keys" o generar una columna índice que en su ultimo paso sería filtrada por un parámetro. El ejemplo de generar un índice puede ayudarnos en caso que querramos reducir todas las tablas del modelo a una cierta cantidad de muestra. Sin embargo, mi recomendación pasa por aplicarlo en tablas de hecho para que la experiencia de creación de visualizaciones no sufra tantos problemas o falta de relaciones.

Al terminar de trabajar podremos publicar nuestro informe pisando el conjunto de datos en la nube. Normalmente luego de publicar un informe que ya tiene configurado sus orígenes de datos, correrá una actualización al instante. Esto no sucederá teniendo un parámetro. Por ello el paso siguiente es muy importante.

Tras realizar la publicación debemos ingresar al portal de Power Bi Service y setear el parámetro para que el dataset se actualice lo haría en caso que no tuviéramos configurado el parámetro. Esto se encuentra en configuración del dataset como muestra la siguiente imagen:

image

En este caso ingreso una fecha lo suficientemente antigua como para garantizar la totalidad de datos esperada. Podría incluso usar años como 1990 que aseguran la historia.

Al terminar le damos aplicar (apply) y actualizamos el conjunto manualmente. 

De esa forma concluimos nuestro proceso para trabajar un dataset de millones de filas en nuestra pequeña computadora de poca memoria RAM permitiendo mantener el conjunto de datos completo en el portal productivo.

Ojalá les sirva para trabajar en grandes volúmenes y evitar dolores de cabeza.